Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force Estimation #2

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
60aa2f3
Added IMU node to launch file and listener.py, moved listener instanc…
Jul 30, 2024
c97028b
Added alignment logic, vector calculations, and robot state tracking
Aug 9, 2024
30b3d07
Added climbing logic and basic velocity controller
Aug 12, 2024
4c9cc76
Added force estimation, may need tweaks
Nov 1, 2024
45c2c4b
merging ros2 conversion into auto-transition
NSSRS Nov 4, 2024
7d00507
removed old listener.py
NSSRS Nov 4, 2024
11822f3
verified merged ros2 code on wall climber
NSSRS Nov 4, 2024
eedebba
converted wc_nopxrf and wc_pxrf launch files, testing and verificatio…
NSSRS Nov 6, 2024
9c5951f
new microstrain inertial params file for ros2, needing fixes
NSSRS Nov 7, 2024
0a96e54
contact forces now calculated, may need tuning. Launch file may not f…
NSSRS Nov 8, 2024
62c6a41
force estimation solved correctly, launch file may need tweaks
NSSRS Nov 11, 2024
9feab54
With URDF, need to comment out main in launch file and run main seper…
NSSRS Nov 22, 2024
44f0e08
launch file corrected
NSSRS Nov 22, 2024
1e6124f
changed listener class name to sally_node, publisher still WIP
NSSRS Nov 22, 2024
63a5c8d
tesing publisher of force estimation for URDF
NSSRS Nov 25, 2024
3fa630a
small debugs of publisher, WIP
NSSRS Nov 25, 2024
9308af9
merging ros2 into auto-transition
NSSRS Dec 5, 2024
49ef0f0
fixed lstsq outputting excessive arrays, need to modify urdf, not par…
NSSRS Dec 5, 2024
9a782d3
Used linting tool and reformatting tool to clean up code, need testing
NSSRS Dec 8, 2024
d34f7ce
added a python launch file in launch, need testing
NSSRS Dec 8, 2024
85de3be
python launch file and rviz2 display forces implemented, need to chec…
NSSRS Dec 10, 2024
55fffa4
Contact force estimation and rviz working
NSSRS Dec 10, 2024
3f03947
added sally_description URDF package into git
NSSRS Dec 12, 2024
b032798
linted sally_description
NSSRS Dec 12, 2024
09b7f54
adding force optimization, test needed
NSSRS Jan 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.idea/
__pycache__/
chemistry.csv
.venv/
chemistry.csv
.DS_Store
9 changes: 0 additions & 9 deletions launch/wc_nopxrf.launch

This file was deleted.

11 changes: 0 additions & 11 deletions launch/wc_pxrf.launch

This file was deleted.

23 changes: 23 additions & 0 deletions sally_description/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.8)
project(sally_description)

find_package(ament_cmake REQUIRED)

install(DIRECTORY
config
launch
meshes
rviz
urdf
DESTINATION share/${PROJECT_NAME}/
)

# Add tests and test dependencies
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
set(ament_cmake_copyright_FOUND TRUE) # skips copyright check
set(ament_cmake_cpplint_FOUND TRUE) # skips cpplint
ament_lint_auto_find_test_dependencies()
endif()

ament_package()
38 changes: 38 additions & 0 deletions sally_description/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Lightweight Observation Robot for Irregular Slopes (LORIS)

## Overview

LORIS is a 3.6 kg quadruped robot that can ascend unstructured steep and vertical terrain using passive microspine grippers.

For further details, please refer to the following publication:

> P. Nadan, S. Backus and A. M. Johnson, "LORIS: A Lightweight Free-Climbing Robot for Extreme Terrain Exploration," in IEEE International Conference on Robotics and Automation (ICRA), 2024, pp. 18480-18486, doi: 10.1109/ICRA57147.2024.10611653.

## Usage

The `loris_description` package contains a `display.py` launch file that will display the robot geometry in `rviz` with an interface for changing joint angles.

```
ros2 launch loris_description display.py
```

Optional Xacro arguments can be included as follows:

```
ros2 launch loris_description display.py xacro_args:='param1:=value1 param2:=value2'
```

The following Xacro arguments are supported:

| Parameter | Description |
| :--------------- | :--------------------------------------------------------------------------- |
| floating_wrist | Represent each wrist as 1 floating joint instead of 3 passive joints if true |
| camera_height | Camera mounting height (m from body origin to pitch axis) |
| camera_pitch | Camera mounting pitch (deg downward from horizontal) |
| gripper_offset | Gripper angle offset (deg outward from centerline) |
| gripper_offset_1 | Override front left gripper angle offset |
| gripper_offset_2 | Override front right gripper angle offset |
| gripper_offset_3 | Override rear left gripper angle offset |
| gripper_offset_4 | Override rear right gripper angle offset |
| effort | Actuator torque limit (Nm) |
| velocity | Actuator velocity limit (rad/s) |
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
controller_joint_names: ['', 'left_joint', 'left_steer_joint_1', 'left_drive_joint_1', 'left_steer_joint_3', 'left_drive_joint_3', 'right_joint', 'right_steer_joint_2', 'right_drive_joint_2', 'right_steer_joint_4', 'right_drive_joint_4', 'elevator_joint', ]
86 changes: 86 additions & 0 deletions sally_description/launch/display.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
"""
Simple launch file to display a robot URDF file.

Optional Launch Arguments:
urdf: Robot description file in urdf/ directory
rviz: Rviz configuration file in rviz/ directory
xacro_args: Additional arguments for xacro (e.g. 'param:=value')
"""

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import (
LaunchConfiguration,
Command,
PathJoinSubstitution,
)
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare
from launch_ros.parameter_descriptions import ParameterValue

# Package name and default values
PACKAGE = "sally_description"
DEFAULT_URDF = "sally.urdf.xacro"
DEFAULT_RVIZ = "display.rviz"
DEFAULT_XACRO_ARGS = ""

# Find resource paths
pkg = FindPackageShare(PACKAGE)
urdf_path = PathJoinSubstitution([pkg, "urdf", LaunchConfiguration("urdf")])
rviz_path = PathJoinSubstitution([pkg, "rviz", LaunchConfiguration("rviz")])

# Generate URDF from XACRO
description = ParameterValue(
Command(["xacro ", urdf_path, " ", LaunchConfiguration("xacro_args")]),
value_type=str,
)


def generate_launch_description():
# Declare launch arguments
urdf_arg = DeclareLaunchArgument(
"urdf", default_value=DEFAULT_URDF, description="Robot description file"
)
rviz_arg = DeclareLaunchArgument(
"rviz", default_value=DEFAULT_RVIZ, description="Rviz configuration file"
)
xacro_args_arg = DeclareLaunchArgument(
"xacro_args",
default_value=DEFAULT_XACRO_ARGS,
description="Xacro arguments (e.g. 'param:=value')",
)

# Declare ROS nodes
robot_state_publisher = Node(
package="robot_state_publisher",
executable="robot_state_publisher",
name="robot_state_publisher",
output="screen",
parameters=[{"robot_description": description}],
)
joint_state_publisher = Node(
package="joint_state_publisher_gui",
executable="joint_state_publisher_gui",
name="joint_state_publisher_gui",
output="screen",
)
rviz2 = Node(
package="rviz2",
executable="rviz2",
name="rviz2",
arguments=["-d", rviz_path],
output="screen",
)

return LaunchDescription(
[
# Launch arguments
urdf_arg,
rviz_arg,
xacro_args_arg,
# ROS nodes
robot_state_publisher,
joint_state_publisher,
rviz2,
]
)
Binary file added sally_description/meshes/base_link.STL
Binary file not shown.
Binary file added sally_description/meshes/elevator.STL
Binary file not shown.
Binary file added sally_description/meshes/left_drive_1.STL
Binary file not shown.
Binary file added sally_description/meshes/left_drive_3.STL
Binary file not shown.
Binary file added sally_description/meshes/left_rocker.STL
Binary file not shown.
Binary file added sally_description/meshes/left_steer_1.STL
Binary file not shown.
Binary file added sally_description/meshes/left_steer_3.STL
Binary file not shown.
Binary file added sally_description/meshes/right_drive_2.STL
Binary file not shown.
Binary file added sally_description/meshes/right_drive_4.STL
Binary file not shown.
Binary file added sally_description/meshes/right_rocker.STL
Binary file not shown.
Binary file added sally_description/meshes/right_steer_2.STL
Binary file not shown.
Binary file added sally_description/meshes/right_steer_4.STL
Binary file not shown.
28 changes: 28 additions & 0 deletions sally_description/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>sally_description</name>
<version>0.0.0</version>
<description>Sally (magnetic wall climber) robot description and configuration</description>
<maintainer email="[email protected]">Paul Nadan</maintainer>
<maintainer email="[email protected]">Nathan Sun</maintainer>
<license>MIT</license>

<buildtool_depend>ament_cmake</buildtool_depend>

<exec_depend>ros2launch</exec_depend>
<exec_depend>launch_ros</exec_depend>
<exec_depend>xacro</exec_depend>
<exec_depend>robot_state_publisher</exec_depend>
<exec_depend>joint_state_publisher_gui</exec_depend>
<exec_depend>rviz2</exec_depend>

<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<test_depend>ament_cmake_gtest</test_depend>

<export>
<build_type>ament_cmake</build_type>
<gazebo_ros gazebo_model_path="${prefix}/../"/>
</export>
</package>
Loading