How to program APM using ROSimple blocks with Navio?

Erlerobotics has an open “ROSimple/Robot_blockly” ROS package that provides web-based visualization and block programming tools for robots and drones.

How much would it take to use this to program a Navio+ with ROS and/or APM installed?
Maybe just a Navio “Robot Block”?
-I don’t know all the hardware differences(both RPi) but if ROS received its data from APM via MavROS some hardware changes wouldn’t matter.


http://erlerobotics.com/docs/ROS/Blockly/Intro.html
Example of how to program APMrover using ROSimple blocks.

I don’t have an answer to your question, but rather a question for you…

What kind of robot are you planning to build?

I was thinking about making a bipedal robot years ago :smiley: , it never materialized, but it would have been interesting.

I was just looking for an easy way to add cv(opencv?) obstacle avoidance to APM, but having a easy ROS on Navio would have so many cool opportunities it just seems like a great idea in general.

Ah ok. Will you be using opencv on a multirotor or a rover? What kind of speeds do you plan to use the obstacle avoidance at?

This was the inspiration for my semi bipedal robot project. I was going to try to mimic this idea with open source software and cots components:

Probably a rover with slow speed. Maybe something a RPi 2 could handle in addition to APM.

ROS was used with some of DARPA’s Robotics Challenge which are all semi bipedal. Specifically the Atlas robot which is the default platform for the competition.

1 Like

Very interesting. The atlas is quite impressive, but so is everything Boston dynamics / Google makes.

This might be a simpler way to implement obstacle avoidance on rover…

http://rover.ardupilot.com/wiki/sonar-sensors/

Here’s a snip-it from down the page a bit:

SONAR_TRIGGER is the distance at which you want the sonar to start to cause a steering deviation when an object is detected. We typically use 300cm (3 meters)
SONAR_SCALING is the value used to convert the input voltage into distance. Since we use the MB1240 sonar, our scaling parameter is 2.04 which is based on 4.9mv/cm @5vdc.
SONAR_TURN_ANGLE is the angle, in degrees, the steering will make when the trigger distance is detected. A positive value will cause a right turn and a negative value will cause a left turn when only one sonar is in use. We typically use 25 degrees for that.
SONAR_TURN_TIME is the amount of time that the steering will deviate when the trigger distance is detected. Defaults to 1 sec. We’ve actually used a smaller value (0.2 seconds) in the below so it doesn’t turn away as long (we just want it to veer, not turn around)

Maybe?

That was the intial plan and CV was the next step up.

When using sonar I would need two sonar sensors (right/left) so you know which way to turn when you meet an object. Luckily navio has two aux. ADC ports. I just have to get their mounting right so the detection zones don’t overlap. But they can overlap (left/right detection in APM sensor code.)

Nice. I look forward to seeing your implementation!