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.


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}


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.

Wiki: arbotix/ChangeList (last edited 2011-10-12 21:21:05 by MichaelFerguson)