-
Notifications
You must be signed in to change notification settings - Fork 124
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
Add tricycle controller demo #145
Merged
ahcorde
merged 12 commits into
ros-controls:master
from
tonynajjar:add-tricycle-controller-demo
Aug 15, 2022
Merged
Changes from 8 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
766d5f4
Added tricycle demo
932dea5
Merge commit 'a4bb81cb1b7707a8db5818329f1ba7528cf4e9c9' into add-tric…
a68f933
fix
0aa7755
Update gazebo_ros2_control_demos/launch/tricycle_drive.launch.py
tonynajjar 863957b
add demo
6bb7a00
Update README.md
tonynajjar 2828e13
add tricycle controller to package.xml
4bb4db4
fix
38c389f
fix typo
b52c45b
Update gazebo_ros2_control_demos/urdf/test_tricycle_drive.xacro.urdf
tonynajjar ae1def9
Update gazebo_ros2_control_demos/urdf/test_tricycle_drive.xacro.urdf
tonynajjar 0e348ab
fix lines
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,229 @@ | ||
Panels: | ||
- Class: rviz_common/Displays | ||
Help Height: 78 | ||
Name: Displays | ||
Property Tree Widget: | ||
Expanded: | ||
- /Global Options1 | ||
- /Status1 | ||
- /TF1 | ||
- /RobotModel1 | ||
- /RobotModel1/Status1 | ||
- /RobotModel1/Description Topic1 | ||
Splitter Ratio: 0.5 | ||
Tree Height: 741 | ||
- Class: rviz_common/Selection | ||
Name: Selection | ||
- Class: rviz_common/Tool Properties | ||
Expanded: | ||
- /2D Goal Pose1 | ||
- /Publish Point1 | ||
Name: Tool Properties | ||
Splitter Ratio: 0.5886790156364441 | ||
- Class: rviz_common/Views | ||
Expanded: | ||
- /Current View1 | ||
Name: Views | ||
Splitter Ratio: 0.5 | ||
- Class: rviz_common/Time | ||
Experimental: false | ||
Name: Time | ||
SyncMode: 0 | ||
SyncSource: "" | ||
Visualization Manager: | ||
Class: "" | ||
Displays: | ||
- Alpha: 0.5 | ||
Cell Size: 1 | ||
Class: rviz_default_plugins/Grid | ||
Color: 160; 160; 164 | ||
Enabled: true | ||
Line Style: | ||
Line Width: 0.029999999329447746 | ||
Value: Lines | ||
Name: Grid | ||
Normal Cell Count: 0 | ||
Offset: | ||
X: 0 | ||
Y: 0 | ||
Z: 0 | ||
Plane: XY | ||
Plane Cell Count: 10 | ||
Reference Frame: <Fixed Frame> | ||
Value: true | ||
- Class: rviz_default_plugins/TF | ||
Enabled: true | ||
Frame Timeout: 15 | ||
Frames: | ||
All Enabled: true | ||
base_link: | ||
Value: true | ||
chassis: | ||
Value: true | ||
left_wheel: | ||
Value: true | ||
odom: | ||
Value: true | ||
right_wheel: | ||
Value: true | ||
steering_link: | ||
Value: true | ||
wheel_front_link: | ||
Value: true | ||
Marker Scale: 1 | ||
Name: TF | ||
Show Arrows: true | ||
Show Axes: true | ||
Show Names: true | ||
Tree: | ||
odom: | ||
base_link: | ||
chassis: | ||
left_wheel: | ||
{} | ||
right_wheel: | ||
{} | ||
steering_link: | ||
wheel_front_link: | ||
{} | ||
Update Interval: 0 | ||
Value: true | ||
- Alpha: 1 | ||
Class: rviz_default_plugins/RobotModel | ||
Collision Enabled: true | ||
Description File: "" | ||
Description Source: Topic | ||
Description Topic: | ||
Depth: 5 | ||
Durability Policy: Volatile | ||
History Policy: Keep Last | ||
Reliability Policy: Reliable | ||
Value: /robot_description | ||
Enabled: true | ||
Links: | ||
All Links Enabled: true | ||
Expand Joint Details: false | ||
Expand Link Details: false | ||
Expand Tree: false | ||
Link Tree Style: Links in Alphabetic Order | ||
base_link: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
chassis: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
Value: true | ||
left_wheel: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
Value: true | ||
right_wheel: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
Value: true | ||
steering_link: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
Value: true | ||
wheel_front_link: | ||
Alpha: 1 | ||
Show Axes: false | ||
Show Trail: false | ||
Value: true | ||
Mass Properties: | ||
Inertia: false | ||
Mass: false | ||
Name: RobotModel | ||
TF Prefix: "" | ||
Update Interval: 0 | ||
Value: true | ||
Visual Enabled: true | ||
Enabled: true | ||
Global Options: | ||
Background Color: 48; 48; 48 | ||
Fixed Frame: odom | ||
Frame Rate: 30 | ||
Name: root | ||
Tools: | ||
- Class: rviz_default_plugins/Interact | ||
Hide Inactive Objects: true | ||
- Class: rviz_default_plugins/MoveCamera | ||
- Class: rviz_default_plugins/Select | ||
- Class: rviz_default_plugins/FocusCamera | ||
- Class: rviz_default_plugins/Measure | ||
Line color: 128; 128; 0 | ||
- Class: rviz_default_plugins/SetInitialPose | ||
Covariance x: 0.25 | ||
Covariance y: 0.25 | ||
Covariance yaw: 0.06853891909122467 | ||
Topic: | ||
Depth: 5 | ||
Durability Policy: Volatile | ||
History Policy: Keep Last | ||
Reliability Policy: Reliable | ||
Value: /initialpose | ||
- Class: rviz_default_plugins/SetGoal | ||
Topic: | ||
Depth: 5 | ||
Durability Policy: Volatile | ||
History Policy: Keep Last | ||
Reliability Policy: Reliable | ||
Value: /goal_pose | ||
- Class: rviz_default_plugins/PublishPoint | ||
Single click: true | ||
Topic: | ||
Depth: 5 | ||
Durability Policy: Volatile | ||
History Policy: Keep Last | ||
Reliability Policy: Reliable | ||
Value: /clicked_point | ||
Transformation: | ||
Current: | ||
Class: rviz_default_plugins/TF | ||
Value: true | ||
Views: | ||
Current: | ||
Class: rviz_default_plugins/Orbit | ||
Distance: 9.402809143066406 | ||
Enable Stereo Rendering: | ||
Stereo Eye Separation: 0.05999999865889549 | ||
Stereo Focal Distance: 1 | ||
Swap Stereo Eyes: false | ||
Value: false | ||
Focal Point: | ||
X: -0.8695068955421448 | ||
Y: -0.05153140798211098 | ||
Z: -0.16355116665363312 | ||
Focal Shape Fixed Size: true | ||
Focal Shape Size: 0.05000000074505806 | ||
Invert Z Axis: false | ||
Name: Current View | ||
Near Clip Distance: 0.009999999776482582 | ||
Pitch: 0.2903985381126404 | ||
Target Frame: <Fixed Frame> | ||
Value: Orbit (rviz) | ||
Yaw: 3.6204142570495605 | ||
Saved: ~ | ||
Window Geometry: | ||
Displays: | ||
collapsed: false | ||
Height: 1032 | ||
Hide Left Dock: false | ||
Hide Right Dock: true | ||
QMainWindow State: 000000ff00000000fd0000000400000000000002380000036efc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b0000036e000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000036efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003b0000036e000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d00650100000000000007800000025300fffffffb0000000800540069006d00650100000000000004500000000000000000000005420000036e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 | ||
Selection: | ||
collapsed: false | ||
Time: | ||
collapsed: false | ||
Tool Properties: | ||
collapsed: false | ||
Views: | ||
collapsed: true | ||
Width: 1920 | ||
X: 1920 | ||
Y: 24 |
58 changes: 58 additions & 0 deletions
58
gazebo_ros2_control_demos/config/tricycle_drive_controller.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
controller_manager: | ||
ros__parameters: | ||
update_rate: 50 # Hz | ||
use_sim_time: true | ||
|
||
tricycle_controller: | ||
type: tricycle_controller/TricycleController | ||
|
||
joint_state_broadcaster: | ||
type: joint_state_broadcaster/JointStateBroadcaster | ||
|
||
joint_state_broadcaster: | ||
ros__parameters: | ||
extra_joints: ["right_wheel_joint", "left_wheel_joint"] | ||
|
||
tricycle_controller: | ||
ros__parameters: | ||
# Model | ||
traction_joint_name: traction_joint # Name of traction joint in URDF | ||
steering_joint_name: steering_joint # Name of steering joint in URDF | ||
wheel_radius: 0.3 # Radius of front wheel | ||
wheelbase: 1.7 # Distance between center of back wheels and front wheel | ||
|
||
# Odometry | ||
odom_frame_id: odom | ||
base_frame_id: base_link | ||
publish_rate: 50.0 # publish rate of odom and tf | ||
open_loop: false # if True, uses cmd_vel instead of hardware interface feedback to compute odometry | ||
enable_odom_tf: true # If True, publishes odom<-base_link TF | ||
odom_only_twist: false # If True, publishes on /odom only linear.x and angular.z; Useful for computing odometry in another node, e.g robot_localization's ekf | ||
pose_covariance_diagonal: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # Need to be set if fusing odom with other localization source | ||
twist_covariance_diagonal: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # Need to be set if fusing odom with other localization source | ||
velocity_rolling_window_size: 10 # Rolling window size of rcppmath::RollingMeanAccumulator applied on linear and angular speeds published on odom | ||
|
||
# Rate Limiting | ||
traction: # All values should be positive | ||
# min_velocity: 0.0 | ||
# max_velocity: 1000.0 | ||
# min_acceleration: 0.0 | ||
max_acceleration: 5.0 | ||
# min_deceleration: 0.0 | ||
max_deceleration: 8.0 | ||
# min_jerk: 0.0 | ||
# max_jerk: 1000.0 | ||
steering: | ||
min_position: -1.57 | ||
max_position: 1.57 | ||
# min_velocity: 0.0 | ||
max_velocity: 1.0 | ||
# min_acceleration: 0.0 | ||
# max_acceleration: 1000.0 | ||
|
||
# cmd_vel input | ||
cmd_vel_timeout: 500 # In milliseconds. Timeout to stop if no cmd_vel is received | ||
use_stamped_vel: false # Set to True if using TwistStamped. | ||
|
||
# Debug | ||
publish_ackermann_command: true # Publishes AckermannDrive. The speed does not comply to the msg definition, it the wheel angular speed in rad/s. |
53 changes: 53 additions & 0 deletions
53
gazebo_ros2_control_demos/examples/example_tricycle_drive.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// Copyright 2022 Open Source Robotics Foundation, Inc. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
#include <memory> | ||
|
||
#include <rclcpp/rclcpp.hpp> | ||
|
||
#include <geometry_msgs/msg/twist.hpp> | ||
|
||
using namespace std::chrono_literals; | ||
|
||
int main(int argc, char * argv[]) | ||
{ | ||
rclcpp::init(argc, argv); | ||
|
||
std::shared_ptr<rclcpp::Node> node = | ||
std::make_shared<rclcpp::Node>("tricycle_drive_test_node"); | ||
|
||
auto publisher = node->create_publisher<geometry_msgs::msg::Twist>( | ||
"/tricycle_controller/cmd_vel", 10); | ||
|
||
RCLCPP_INFO(node->get_logger(), "node created"); | ||
|
||
geometry_msgs::msg::Twist command; | ||
|
||
command.linear.x = 0.2; | ||
command.linear.y = 0.0; | ||
command.linear.z = 0.0; | ||
|
||
command.angular.x = 0.0; | ||
command.angular.y = 0.0; | ||
command.angular.z = 0.1; | ||
|
||
while (1) { | ||
publisher->publish(command); | ||
std::this_thread::sleep_for(50ms); | ||
rclcpp::spin_some(node); | ||
} | ||
rclcpp::shutdown(); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is ign_ros2_control_demos intentional here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nope, it's wrong too.
Do you have any plans to include this demo in
ign_ros2_control
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No not at the moment, maybe when I migrate to ignition.
Changed
ign_ros2_control_demos
togazebo_ros2_control_demos