PDA

View Full Version : Getting stated with ROS and ArbotixM



Freyzor
01-29-2015, 08:42 PM
Hi, I have a wheeled quadruped built from and arbotix and dynamixels and have had good success with arbotix alone using something derived from the NUKE but now I want to get into the ROS echosystem. I have a Raspberry Pi with wifi connected to the arbotix via FTDI, ROS indigo setup and the arbotix package. I got the firmware build and running using inotools which is nice since that works well from the command line via SSH terminal.

I'm new to ROS but have gone through the basic tutorials and now want to implement a basic quadruped walker via ROS. I haven't found any comprehensive explanations of what the different components of the arbotix package and what I find are references to 0.4 and 0.5 versions of but the git versions seems to be at 0.10 and the descriptions no longer match up. So I pretty much have to work may way backwards from the code to dig up the accepted parameters and such. It a bit hard to figure out exactly how the controllers are intended to work and be used. i.e. the follow_controller for which I have seen an example config as a turret but I have no idea why and how it is used yet. What controller would you use for a 3dof leg of a walker?

Does anyone have examples of a setup for a simple robot (preferebly a quadruped or a hexapod) using recent versions that I could reference?

I'm trying to bootstrap myself into a running environment where I have something like a gait engine with a working yaml config and urdf.

Any tips or references are helpful :)

Freyr

tician
01-30-2015, 02:39 AM
Expecting you've already figured it out, but the install process for arbotix_firmware on the ros wiki is horribly obsolete (couple years old) and the references to code.google and RoboController libraries are not to be given any thought at all unless a 'history nerd'/'digital packrat' (contents of code.google tutorials mostly migrated to vanadiumlabs.github.io/arbotix and vanadiumlabs.github.io/pypose). The install process consists of grabbing the most recent versions of the arbotix 'arduino core/libraries' and arbotix_ros repositories from github.com/vanadiumlabs, then copying the 'core/libraries' and 'arbotix_firmware' folders to the arduino sketchbook folder and renaming/reordering as necessary for your version of the Arduino IDE to find everything. After installed correctly, you will then be able to compile and upload the ros firmware to the arbotix.

As for the arbotix_ros metapackage and its component packages, the package.xml files provide a brief overview of their purpose. The arbotix_python package is the really important package that provides all of the interface code that permits communication between the firmware running on the arbotix (and its servos or sensors) and other ros nodes, as well as a couple demonstration programs for interacting with the arbotix and connected servos. The arbotix_msgs package defines the new messages that can be utilized with the arbotix_driver script and its arbotix_python component scripts/objects. The arbotix_controllers package is a group of 'high-level' demonstration python scripts for controlling grippers on the ends of arms.

As for actually using it all, the turtlebot project might a place to start since they had been using it for controlling arms attached to it, but that may have changed to using USB2AX or USB2Dynamixel interfaces since I last checked. Most ros-based walkers that I've seen cut out the arbotix in favor of the USB2AX and an on-board controller like the RPi, BBBk, or 'bigger' device like an Intel NUC. It is pretty much up to you to find (or build your own) gait engine and then write a node that dumps the gait-generated goal positions to the arbotix_driver node (you could also upload new firmware to the arbotix to make it emulate a USB2AX, but I don't have such code). The repositories of github.com/KurtE are a nice place to look for existing gait engines adapted to run on multiple platforms and possibly some of the code for Kevin Ochs' enormous ros octopod (https://github.com/KurtE/Locomotion) using a USB2AX + NUC. Would have more detailed instructions on using some of it, but it's been a while since using ros in general and the arbotix_python scripts are not running successfully because of what I expect is a python/ros configuration error (still running 12.04 with hydro).


Notes: The arbotix-M is an upgrade/replacement of the original vanadium labs arbotix created by TrossenRobotics when (I'm guessing) the original manufacturing run was nearing 'completely out of stock' without an immediate replacement from vanadium labs. The maintainer (lnxfergy) of the arbotix_ros package is not very active in the arbotix's development anymore and mostly doing paid work on numerous ros projects, and other code, related to the UBR-1. Pull requests on github get handled/merged quickly, but the arbotix_ros stuff is not really his priority other than occasional compatibility upgrades like catkinization.

KevinO
01-30-2015, 12:31 PM
My ROS stack is still on my private github but Ivan Biriuk also did a ROS hexapod and has his stuff is public if you want to take a look at his.

http://wiki.ros.org/Robots/HexapodRobot

Freyzor
01-30-2015, 01:22 PM
Thanks a bundle the detailed answer.

I already have the arbotix_firmware up and running and the ROS stack working. My plan was to initially port my heavily modified NUKE based engine which already had the geometrically stable gait as a function of time rather than which I was rather happy with. The 'problem' is more around how to structure the code/project in a sane way. The examples you provide seem to go a long way to bridge that gap.

I'm fine with extending/modifying both ends of the ROS "bridge" if I need to. I'd rather not spend all my time reinventing a square wheel as really want to start expanding my robot beyond the 'walking RC toy' stage and start playing around with slam and navigation and behaviors. The repos you pointed to look really interesting and should give me some idea as to how I should set up my environment.

As a side note. Have you guys been using the tf and/or kinematic packages available at all?

Is there anything I should be looking into. Having a urdf description available seem to provide a lot interestng posibilities but most seem geared towards high DOF manipulator arms. Doing foot placement and IK chains and trajectory planning sounds like a interesting topic but I have not seen any walker examples yet.

KurtEck
01-30-2015, 01:26 PM
Is there anything I should be looking into. Having a urdf description available seem to provide a lot interestng posibilities but most seem geared towards high DOF manipulator arms. Doing foot placement and IK chains and trajectory planning sounds like a interesting topic but I have not seen any walker examples yet.

You might take a look at what Kevin has been doing in the thread: http://forums.trossenrobotics.com/showthread.php?6725-ROS-Hexapod-project-Golem-MX-64-4dof

KevinO
01-30-2015, 01:35 PM
As a side note. Have you guys been using the tf and/or kinematic packages available at all?



You have to use TF if you want to use their navigation stack. I'm using it and Ivan Biriuk stack uses it too. He uses KDL as well where I opted out and use a simple law of cosine solver. So take a look at his example if you are curious. Although KDL isn't recommended on solves less than 6dof it seems to be working for Ivan.