does diff_drive_controller require a hardware interface?
Development Environment:
- OS: Ubuntu 18.04
- ROS version: Melodic
Robot:
- 6 wheel rover (3 wheels each side)
- TREX Robot Controller: https://www.gotronic.fr/pj-1119.pdf
- No encoders, but a built in accelerometer and a LIDAR sensor attached
I have working on this for the 2 weeks or so, but I still haven't quite figured out how ros_control is meant to work outside of tutorials.
Specifically, I have a small robot that I want to control with the diff_drive_control package. Currently the robot has onboard a TREX motor control board with a built in Arduino. I have programmed the Arduino with rosserial so that it reads from a couple rostopics a value between -255 and 255 to control the speed of the wheels on each side of the robot.
Now that I have proven that to work, I would like to replace these rostopics with the output from a differential drive controller. Specifically, I am using the diff_drive_controller package, trying to integrate skid steer into my robot.
I have gone through the tutorials at RobotIgnite Academy, as well as this rather helpful tutorial at https://slaterobots.com/blog/5abd8a1e... , but am still stuck on getting the diff_drive_controller to work.
My question right now is: what is required to run diff_drive_controller? I currently have a launch file, a controllers.yaml file and a urdf file. Do I have to develop a hardware interface c++ class? I just want to treat the robot like it has two wheels (one velocity for each side), and that seems standard enough that I would think the .yaml file would take care of that.
The environment builds, but I get the following message upon using the launch file:
taylorwelker@anshul-omegainfinity:~/rubble_ws$ roslaunch rubble rubble_control.launch
... logging to /home/taylorwelker/.ros/log/bf391328-ab9a-11e8-b7d3-e03f49b1675a/roslaunch-anshul-omegainfinity-2245.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://192.168.0.101:33097/
SUMMARY
========
PARAMETERS
* /ekf_localization/base_link_frame: base_link
* /ekf_localization/frequency: 50
* /ekf_localization/imu0: imu/data
* /ekf_localization/imu0_config: [False, False, Fa...
* /ekf_localization/imu0_differential: True
* /ekf_localization/imu0_queue_size: 10
* /ekf_localization/imu0_remove_gravitational_acceleration: True
* /ekf_localization/odom0: rubble_velocity_c...
* /ekf_localization/odom0_config: [False, False, Fa...
* /ekf_localization/odom0_differential: False
* /ekf_localization/odom0_queue_size: 10
* /ekf_localization/odom_frame: odom
* /ekf_localization/two_d_mode: True
* /ekf_localization/world_frame: odom
* /rosdistro: melodic
* /rosversion: 1.14.3
* /rubble_joint_publisher/publish_rate: 50
* /rubble_joint_publisher/type: joint_state_contr...
* /rubble_velocity_controller/angular/z/has_acceleration_limits: True
* /rubble_velocity_controller/angular/z/has_velocity_limits: True
* /rubble_velocity_controller/angular/z/max_acceleration: 25.0
* /rubble_velocity_controller/angular/z/max_velocity: 2.0
* /rubble_velocity_controller/cmd_vel_timeout: 0.25
* /rubble_velocity_controller/enable_odom_tf: False
* /rubble_velocity_controller/left_wheel: wheel_left_joint
* /rubble_velocity_controller/linear/x/has_acceleration_limits: True
* /rubble_velocity_controller/linear/x/has_velocity_limits: True
* /rubble_velocity_controller/linear/x/max_acceleration: 20.0
* /rubble_velocity_controller/linear/x/max_velocity: 2.0
* /rubble_velocity_controller/pose_covariance_diagonal: [0.001, 0.001, 10...
* /rubble_velocity_controller/publish_rate: 50
* /rubble_velocity_controller/right_wheel: wheel_right_joint
* /rubble_velocity_controller/twist_covariance_diagonal: [0.001, 0.001, 0....
* /rubble_velocity_controller/type: diff_drive_contro...
* /rubble_velocity_controller/wheel_radius_multiplier: 1.0
* /rubble_velocity_controller/wheel_separation_multiplier: 1.5
NODES
/
controller_spawner (controller_manager/spawner)
ekf_localization (robot_localization/ekf_localization_node)
auto-starting new master
process[master]: started with pid [2256]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to ...