Interbotix / interbotix_ros_turrets

ROS Packages for Interbotix Turrets
BSD 3-Clause "New" or "Revised" License
7 stars 10 forks source link

[Bug]: Ros2 humble support #3

Open MAVProxyUser opened 1 year ago

MAVProxyUser commented 1 year ago

What happened?

No longer works with modern ROS.

Please bump support level to be same as manipulators: https://github.com/Interbotix/interbotix_ros_manipulators/tree/humble

Robot Model

all

Operating System

Ubuntu 20.04

ROS Distro

Other (Describe in "Anything Else")

Steps To Reproduce

Install ROS2 Humle...

Fail due to ament packages contaminating catkin workspace

interbotix_xsturret_control src/interbotix_ros_turrets/interbotix_ros_xsturrets/interbotix_xsturret_control (ros.catkin) interbotix_xsturret_descriptions src/interbotix_ros_turrets/interbotix_ros_xsturrets/interbotix_xsturret_descriptions (ros.catkin) interbotix_xsturret_gazebo src/interbotix_ros_turrets/interbotix_ros_xsturrets/interbotix_xsturret_gazebo (ros.catkin) interbotix_xsturret_object_tracker src/interbotix_ros_turrets/interbotix_ros_xsturrets/examples/interbotix_xsturret_object_tracker (ros.catkin) interbotix_xsturret_simple_interface src/interbotix_ros_turrets/interbotix_ros_xsturrets/examples/interbotix_xsturret_simple_interface (ros.catkin)

Relevant log output

No response

Anything Else

No response

lukeschmitt-tr commented 1 year ago

Hello @MAVProxyUser. Basic ROS 2 support for interbotix_ros_xsturrets (control, descriptions) is planned but we currently don't have the bandwidth to work on it. I will keep this issue open until it is implemented.

In the meantime, the underlying control software (the interbotix_xs_sdk) has already been converted to ROS 2. It just needs to be configured properly for the turrets. If you only need basic turret control thorugh ROS 2, you could hack a simple launch file together that provides the interbotix_xs_sdk with the robot_description, motor configs, and mode configs parameters similar to what is done here. The robot description parameter can be built similarly to the arms using a directive like this one. Note that xacro args may be different, but you can compare them to the ones found in any xacro in this repo, or the xacro command in the xsturret_description.launch file.

You can then use the interbotix_xs_modules.xs_robot's InterbotixTurretXS class to control your robot using Python scripts.

Let me know if you have any questions if you decide to go this route.

MAVProxyUser commented 1 year ago

Thanks, I'm most interested in the Gazebo support ATM. I have solutions for base control. https://github.com/Interbotix/interbotix_ros_turrets/tree/main/interbotix_ros_xsturrets/interbotix_xsturret_gazebo

nicholaschan23 commented 10 months ago

Any movement on this? I've spent a few weeks trying to port this to ROS 2 with the Interbotix updated ROS 2 xs_sdk and have been running into a lot of issues. Unable to control the turret by publishing to /commands/joint_single etc.

lukeschmitt-tr commented 10 months ago

@nicholaschan23 Basic ports of the xsturret_control, xsturret_descriptions, and xsturret_sim packages have been published to the humble branch.

@MAVProxyUser Unfortunately, the sim porting may take a bit more time. It its current state, you can publish commands to the pan and tilt joints of type trajectory_msgs/msg/JointTrajectory.

nicholaschan23 commented 10 months ago

Thank you so much! The humble branch is working on my end and can control the turret indefinitely.