Skip to content
Josh Weaver edited this page Sep 24, 2013 · 33 revisions
  1. ROSCOPTER
ROS interface for Arducopter using Mavlink 1.0 interface. credit to both https://code.google.com/p/roscopter/ and https://github.com/aletty/roscopter

Currently it supports controlling the arducopter by overriding the RC command, and it publishes all the sensor data.

Table of Contents

Building

Fuerte

  * Checkout repo
  * Checkout and build mavlink in the roscopter folder, or create a symlink to your existing mavlink build. The `roscopter/mavlink` folder should point to the built mavlink folder.
  * Mavlink can be checked-out from : git clone https://github.com/mavlink/mavlink.git
  * To setup Mavlink, navigate to the "pymavlink" folder and run the command "sudo python setup.py install".
  * Build roscopter using `rosmake`.

Groovy

  * Checkout repo
  * Checkout and build mavlink in the roscopter folder, or create a symlink to your existing mavlink build. The `roscopter/mavlink` folder should point to the built mavlink folder.
  * Mavlink can be checked-out from : git clone https://github.com/mavlink/mavlink.git
  * To setup Mavlink, navigate to the "pymavlink" folder and run the command "sudo python setup.py install".
  * Navigate back to Catkin folder and run 'catkin_make'.

Running

nodes/roscopter.py --device=/dev/ttyUSB0 --baudrate=57600

  * `--device` specifies the serial device. It could be `/dev/ACMx` or `/dev/ttyUSBx`. 
  * `--baudrate` specifies the baudrate. This should be 57600 if you are using XBee to talk to the APM, and 115200 if you are using a direct wired connection. 
  

Getting sensor data

Roscopter publishes sensor and other state data on the following topics:

  * /attitude : imu information
  * /gps :gps fix
  * /rc : value of current raw rc input
  * /state : shows wether the copter is armed or not, and the current mode 
  * /vfr_hud : airspeed, groundspeed, heading, throttle, alt, climb

Control

To enable control, run the roscopter node with --enable-control=true option.

nodes/roscopter.py --device=/dev/ttyUSB0 --baudrate=57600 --enable-control=true

Currently the only way of controlling the arducopter is by publishing to `/send_rc` topic. It takes raw RC channel values (between 1000-2000), and uses them to override the values received from the RC controller. To give control back to RC, publish "0" for the corresponding channel. A value of "-1" for a corresponding channel means no change should be made to that channels current value. To send the -1, the value given for the channel should be "65535".

rostopic pub -1 send_rc roscopter/RC "{channel:[1000,]}"

Note: 1000-2000 is the standard PPM Modulation scheme; some receivers/transmitters might violate this specification.

Arming/Disarming

Arming and disarming can be done by calling the `/arm` and `/disarm` services with no parameters.

Channels:

  1. Roll
  2. Pitch
  3. Throttle
  4. Yaw
  5. Change APM Mode
  6. Optional
  7. Optional
  8. Optional
Clone this wiki locally