Contents
0.7.0 (FORTHCOMING)
0.6.2 (2011-10-12) r578
- [arbotix_python] fix blocking when using usb2dynamixel (r554).
- [arbotix_python] fix read error when sync_read is false, remove limits on ticksToAngle (r556).
- [arbotix_python] improvements to follow_controller (r570).
0.6.1 (2011-09-23) r528
- [arbotix_python] diff controller stops on timeout.
- [arbotix_python] reduce loginfo usage, add diagnostics for servo read failures.
- [arbotix_python] fix small bug introduced into terminal "ls" command.
0.6.0 (2011-09-09) r507
- [arbotix_python] huge overhaul:
- new controller interface, easier to use and more robust.
added FollowJointTrajectoryAction controller with onboard interpolation support. removed older trajectory controllers from [arbotix_controllers]
- general re-organization of sensors/diagnostics/publishing interfaces.
- [arbotix_python] update controllerGUI to relax servos on release.
- [arbotix_python] fix arbotix.py to handle 12-bit servos in continuous rotation.
0.5.0 (2011-07-24) r414
- [arbotix_controllers] add parallel gripper controller.
- [arbotix_firmware] various updates to clean up and speed up firmware.
- [arbotix_python] add startup code to wait for connection.
- [arbotix_python] remove PML support.
- [arbotix_python] added terminal program.
0.4.2 (2011-03-20) r298
- [arbotix_msgs/arbotix_python] add default value for Setup Channel service.
- [arbotix_python] new controllerGUI automatically extracts names/min/max from URDF and YAML specs.
- [arbotix_python] remove sensor_msgs/Range usage from sensors.py to keep package cturtle compliant.
- [arbotix_python] fix velocity calculation for dynamixels.
- [arbotix_python] fix bug in parameter based setup of analog/digital.
- [arbotix_python] ~use_sync parameter is now ~sync_read, added separate ~sync_write parameter.
- [arbotix_sensors] hardcode Range.INFRARED in ir_range.py.
- [arbotix_sensors] add max_sonar.py - subscribes to an analog channel, converts to a range command. Works with maxbotix sonars.
0.4.1 (2011-02-13) r276
- [arbotix_controllers] add interpolation to trajectory and joint controllers.
- [arbotix_python] add support for diagnostic_msgs output.
- [arbotix_python] fix grave bug in interpolation.
0.4.0 (2011-02-11) r266
The previous arbotix package has now become a stack of its own.
- [arbotix_python] (formerly arbotix) Add service to start new analog/digital topics.
- [arbotix_python] joint_state publication includes (computed) velocity.
- [arbotix_python] each servo now has Float64-based control topic and does local limiting.
- [arbotix_python] streamline to single, synchronous update, add throttle calculations to anything in the main loop.
- [arbotix_python] default baud to 115200.
- [arbotix_python] integrated into core: base and pml drivers.
- [arbotix_controllers] classic joint_controller.py joint_state style to maintain compatibility.
- [arbotix_sensors] add ir_ranger.py
- [arbotix_firmware] support for sync_write.
- [arbotix_firmware] patches to digital reads.
Notes on usage changes:
The original arbotix package is now arbotix_python. The arbotix-node.py executable is now driver.py within the new package.
The original joint controller has been moved into the arbotix_controllers package, as a standalone executable called joint_controller.py. It takes a single parameter -- a list of joints, which it converts from a cmd_joints topic into individual Float64 messages. Interpolation (speed control) will be implemented shortly.
The sync parameter for servos is now called readable.
Rates
The new driver.py has a single main loop, which mitigates issues caused to race conditions. The single main loop will run at a frequency determined by the rate parameter (default: 100). Each main module then has a frequency it runs at, determined by its rate parameter:
- ~rate - the rate to run the loop at (default: 100)
- ~read_rate - dynamixel read rate throttle (default: 10)
- ~write_rate - dynamixel sync_write rate throttle (default: 10)
- ~base/rate - (default: 10)
- ~pml/rate - (default: 5)
Digital and Analog
The old get/set digital and analog services are now gone, in their place is a new topic streaming system. This system is much faster than the old services-based one, but requires some setup:
Terminology: we have both analog and digital sensors -- that is, inputs. There are also digital servos or outputs.
- To start a digital sensor, analog sensor, or digital servo, we must define the topic name to publish/subscribe to, and the pin used:
- digital_sensors: {topic_name: {pin: 1}, more_topic_name: {pin: 2}}
- analog_sensors: {topic_name: {pin: 1}, another_topic_name: {pin: 2}}
- digital_servos: {topic_name: {pin: 3}, another_topic_name: {pin: 4}}
Pin numbers correspond to arduino analog/digital pins. Each sensor/servo can also take a throttle parameter, the default is 10. Additionally, we provide services to setup new IO channels (SetupChannel.srv). You can start an analog channel, on pin 1, publishing at 10hz, like this:
- rosservice call /arbotix/SetupAnalogIn atest 1 10
Base Controller
There is no longer a controllers collection. Most have moved to become new standalone nodes, however the base_controller is fully integrated into the main package. Configuration and parameters are similar to before, but no longer inside a controllers dictionary. To configure it:
base: {base_width: 0.36195, ticks_meter: 66348, Kp: 2, Kd: 0, Ki: 0, Ko: 100}
PML
As with the controllers, there is no longer a sensors collection as most have moved to standalone nodes. The lone exception is the PML. As with the base controller, it can be configured as:
pml: {frame: base_laser, servo_id: 200, sensor_id: 0}
Parameters have not changed from before.