PDA

View Full Version : [Project] ROS enabled PhantomX Hexapod



r3n33
04-24-2015, 10:40 AM
I suppose in many aspects my project is the same as KevinO's awesome robot Golem. Kevin has been kind enough to allow me to work on his ROS development and at the moment I'm re-gearing the system for the PhantomX kit.

So her name is ROSie and I'm thinking it stands for ROS Intelligent Explorer unless I come up with something better :p

I went with the AX18 kit because I figured I could potentially do more with faster servos. After the kit was assembled I used a couple of AX12 servos and a 3D printed adapter to attached a pan and tilt neck on the front of the body that holds the PrimeSense scanner.

With the extra 330 grams of weight on the front rather than the top of the body I was noticing the femur servos were getting extra warm on the front two legs and would tend to over heat to the point where they would shut down. The weight didn't seem unreasonable so I started to experiment with 30mm cooling fans and 3D printed brackets. While they do generate a little bit of noise they also keep the servos cool enough to run continuously ( or at least enough to bother my dogs until the battery dies ). If you are interested in the AX servo cooling fan mod the files are available on http://www.thingiverse.com/thing:781366

My current plans are to run ROS on a Raspberry Pi 2 but if I run out of processing power too soon I'll be switching to a new platform. For now I'm trying to utilize as many of the existing parts that I have laying around and the RPi2 is holding up pretty good under the ROS load.

I've brought in customized 3D models of the PhantomX for the robot model in ROS.. they aren't 100% perfect but I think they look pretty good for the amount of time utilized. I plan to add the models for the pan and tilt servos as well as the PrimeSense.

All the PhantomX measurements have been brought into the system and she's been walking around in my small dev area just a bit as you can see from my mapping screen shot.

As of last night I brought in an alternate IMU driver since I'm using the CH Robotics UM7 and I now have the IMU auto levelling working. And if you notice in the screen shots depth scanning, laser scanning, odometry, and 2D mapping are up and running as well. I also went with a bluetooth PS3 controller for manual control and a small amplified speaker for sound effects and talking. :D

I think that's about all for now. I'm trying not to get too far ahead of myself here as some plans are likely to change as the development continues but at the same time I wanted to share and show my presence on the forums a bit.

Current hardware setup:

PhantomX AX MKII Kit with AX-18A Servos
ODROID XU3 with 32GB eMMC 5.0 and USB Bluetooth
PrimeSense 1.08 Camera and Depth Sensor on AX-12A Pan/Tilt Servos
USB2AX Servo Communication Adapter
CH Robotics CHR-UM7 IMU
Adafruit USB FTDI Friend
Boise 11N 300Mbps WiFi Adapter
Pololu 5V 5A voltage regulator

5941
5874587558765877


https://www.youtube.com/watch?v=VYBAM0MrvWI

kgranat
04-24-2015, 10:58 AM
This is really phenomenal. I can't wait to try this out on one of our hexapods! Great work.

jwatte
04-24-2015, 11:05 AM
The RPi2 has plenty of processing power. ROS won't be a problem for it.

Regarding servo cooling, when I was looking for it for Onyx, I found some 18mm, thin, 5V fans that fit very well on that bot. Small and lightweight and surprisingly quiet! (I also found another, even thinner, fan that wasn't quiet :-)

KevinO
04-24-2015, 12:23 PM
It's really great to see the code running on another hexapod! Great job getting it all working!

Zenta
04-24-2015, 12:57 PM
Great work! Looking good. Would be great to see a video of the real hex walking too. :wink:

KurtEck
04-24-2015, 01:20 PM
Let me 2nd or 3rd the great work!

I will have to try it out on my PhantomX, not sure yet which Linux board to try it out with?

Maybe easiest to try with may spare RPI2, but am leaning more toward ODrdoid. Maybe the C1 I have that has Ubuntu 14.04 with Ros already installed on it. But then maybe an Edison :lol:

Again great job!

r3n33
04-24-2015, 03:04 PM
Thanks everyone!

It has been a blast so far and I'm looking forward to seeing what else I can do to advance this already really nice ROS package. :D

I'm still making slight adjustments to the code to properly drive the PhantomX around but it is looking pretty good already. I can't wait to put some final touches and see what ya'll think of the code on your bots! I hope it goes as smoothly as I imagine it will.

The RPi2 was holding up well but I think the CPU usage was up around 80% on all four cores the last time I checked. I like the idea of the ODroid because it has some extra power and I think it will fit in the frame unlike the NUC. Time will tell. I've been cheating a bit and running the code through the development process on my desktop since it's much faster. That leaves the hex standing with a nest of USB cables connected to the PC ( hence the mere 180 degree view on the 2D map ).

And I'll get a video soon.. Promise ;) Just have to finish installing a couple components like the 5V regulator and 3D printed IMU mount.

r3n33
04-26-2015, 03:53 PM
Well I didn't quite finish installing all of my hardware but I didn't want to leave everyone hanging without a video so here's a little demo of ROS running on the RPi2.


http://www.youtube.com/watch?v=1FDokkxilYA

And a screen shot of the CPU load at the time of the video..

5884


This is just the beginning and I haven't had any time to try and smooth things out. Still, pretty cool overall if you ask me :D

jwatte
04-26-2015, 04:13 PM
Wow, that's high load!
How many Hz are you running at?
Also, did you build with the stock gcc, or thw upgeaded 4.8?
By default, the gcc builds for old rpi arm6 with gcc 4.6.
Building for arm7 with -O3 and neon fp on 4.8 gives back a bunch of cpu (depending on what the code is doing)

r3n33
04-26-2015, 04:58 PM
Here is another video showing some smoother motion from KevinO's ROS package on the PhantomX


https://www.youtube.com/watch?v=STby7NtJzE0

r3n33
04-26-2015, 05:04 PM
Oh.. yes it is pretty high.. Let's see.. There are multiple loop rates in the package but the fastest one in my branch is 1kHz.

gcc -v on my RPi2 running Linaro is 4.9.1

I didn't change any compiler flags but if there are some I should be testing I'll give it a try for sure.

jwatte
04-26-2015, 05:13 PM
The ones that matter IIRC are -O3 -mfloat-abi=hard -mfpu=neon -mcpu=arm7
I don't know what Linaro does by default -- perhaps it's better than the default Rasbian already :-)

r3n33
04-26-2015, 05:18 PM
Thanks! I'm willing to give them a try.. This is what the CPU looks like when I enable Depth Sensor in rviz..

5885

I'm afraid to connect the servos and attempt to walk with a pegged CPU :(

KevinO
04-26-2015, 05:19 PM
I am assume R3n33 is running the complete launch system. Which would be about 10 packages all running so I'm not to surprised of the CPU load. Although I should take a peek sometime and see if there is any optimization's I could add. R3n33 we should see what we can move to the desktop. :P I'd hate to see the load with mapping turned on. :)

r3n33
04-27-2015, 08:34 AM
Agreed.. Optimizations is going to be a great thing to look into when it comes down to running on something like this little pi. I'll see what I can do for splitting nodes between computers but I'm already thinking I'm going to have a little trouble with moving the mapping.

There are a few things that I'm still troubleshooting and they are each related to running on the Raspberry sadly. But after I fix up these kinks (hopefully today) I'll be ready to reduce the CPU load. I swear though if this jack server and the sound_play node keep it up I'll be forced to switch out this SBC :p

KurtEck
04-27-2015, 09:36 AM
At some point would love to play along (right now building HR-OS1). As I mentioned in previous posting not sure yet which processor to use here. Maybe my Odroid U3 as it has probably has the highest performance... While working on the HR-OS1 (which I am starting off with the RPI2 in), The Instructions, for the HR-OS1, was to set the RP2 to overclock. I assume you have already done so with your RPI2?

It looks like you are using a PrimeSense camera with your setup? I should look to see how you have it mounted. Are you using standard brackets or something special? (I do have one of these sitting in cabinet).

As for CPU usage on RPI2, I am curious to see how much CPU are you using to do the basic walking? Are you using Kevin's new walking algorithms (sinusoidal), that do the IK many times a second, and output often to the servos, or are you using more of a fixed N Step walking algorithm like NUKE or Phoenix code bases do? If the later are you having the RPI2 do the interpolation from one pose to the next? If so and you are using an USB2AX to control your servos, I have a firmware version for USB2AX, where I can simply pass it each pose and let it take care of the interpolation, which in my earlier Phoenix ports to Linux helped.

Since you are working with Kevin's code base, I am about 99% sure that he has already taken care of this, but in my earlier ports of the code, I had places with some form of spin loops, like timing loops, which would do something like:
while ((millis()-starttime) < waittime) ;
Which eats lots of CPU time... (yes Arduino code, but I have conversions for Linux). CPU usage was helped out by yield calls or even better if it used a delay instead...

Again looks like you are doing some great stuff. Maybe it will finally motivate me to get going again to try to get my mind around using ROS.

Kurt

r3n33
04-27-2015, 10:01 AM
I like the specs on the Odroid XU3 and I'm definitely willing to give one a try.. One thing I'm curious about is support for these boards. The Pi is well supported and not that it matters much to me but I expect things like the 3.5mm sound jack to work without so much darn trouble. I suppose it might come down to a lack of understanding of workings in the linux sound system.. ie alsa, jackd. Anyway, now that I uncovered and fixed an IMU init bug in the ROS code I'm going to try to get sound working with the sound_play node. It works with mplayer and espeak but not sound_play. Strange... :robotsurprised:

Yeppers that is a PrimeSense, good eye. I used the standard brackets from the AX12 box and since this was an extra sensor I took it apart, dremel'd off the connector on the bottom of the sensor, drilled 4 holes in the back side of the sensor case and attached to the bracket.. The screws look like they will get in the way doing this ( and I can take close up pictures if you'd like ) but the flex in the sensor case will allow for the 4 screw heads. I think it looks really clean and it is sturdy.

I am in fact using Kevin's algorithms for walking but haven't drilled down to identify how much of the CPU was going towards the locomotion node.

I certainly can't blame you for working on your HR-OS1 but with as much as you seem to enjoy this stuff I think you might like ROS. Just takes time and the usual amount of patience ( LOTS ;) )

Edit: Oh and no I don't have the Pi2 overclocked at the moment. I suppose I could try for a little extra performance but I didn't want to risk instability.

r3n33
04-27-2015, 11:07 AM
Hey jwatte.. thank you! You led me down a good path with those compiler flags.

These are what I went with on the Pi2:
-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7

And now CPU usage looks much better! This is while walking with Depth Sensor off still.

5888

KurtEck
04-27-2015, 11:16 AM
As for Odroid (Hardkernel) and support: I have mixed feelings about support. That is I had a few issues with my first couple of them. U2- power connector was flaky (could work around). But I liked enough I preordered a U3, which is a nice board, but had issues with USB, especially if you used a powered USB hubs (which I ran into). There were some fixes, to cut off some components, cut traces... They then reved the board (and added some more IO SPI? or I2C would have to look again). So these days I would wait a little while after they introduce a board to work out kinks. C1 appears to be a nice low end (4 core 1.5ghz), with almost RPI compatibility for io pins. When I picked up the C3, they did not yet support TFT touch screen, but said they would work on it and a week or so later they had a working version. (Intel with the Edison - Still does not work, last kernel release SPI was even more screwed up then before...) So personally on actual support you get more information directly from the people who fix things at Hardkernel, then you do from Intel on the Edisons.

Again I still think they are interesting boards and now that they have an American distributor that you don't have to pay to ship from Korea I am more likely to pick up another one... Either refresh by U3 or I like the XU3-lite. Does not have quite the clocking of the XU3 (1.8ghz versus 2.0ghz - but both can run with 8 cores), don't need display port, not sure about energy monitoring... but from Amerdroid $105 versus $180. I would also for sure order a new eMMC board for them. I believe they have found maybe double the disk performance for eMMC versus SDcards.

Yes it would help to see some close up pictures of your setup for the sensor. I wonder how much it helps to have it mounted on the front versus more centered, where it may evenly distribute weight?

Sounds - Glad you will have all of this figured out before I get a chance to try it :lol: I have found each board different on sound configurations... Have not tried it with Ros, but do have my Linux code working with PCM sounds plus Espeak... Wonder if there is some ROS settings on what is sent to Jack versus using the default values... Good Luck.

Again you are inspiring me to take a look at this.

jwatte
04-27-2015, 11:26 AM
-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7

That's awesome! Glad you're getting more oomph out of that little board.
I'm actually quite impressed with it. The GPU can be used, too, even headless if you don't mind some arcane setup magic...

KevinO
04-27-2015, 11:48 AM
The GPU can be used, too, even headless if you don't mind some arcane setup magic...

I actually bought a hdmi dongle that tricks it into thinking there is a monitor connected. It works great!

http://www.fit-pc.com/web/products/fit-headless/

r3n33
04-27-2015, 03:24 PM
Yes it would help to see some close up pictures of your setup for the sensor. I wonder how much it helps to have it mounted on the front versus more centered, where it may evenly distribute weight?


I'm not sure how much it helps to be up front since I haven't tried the standard location on top but I definitely like the way it looks! It also took a 3D printed "spacer" to attach the bracket to the front of the PhantomX without making modifications to the frame. I can put that on thingiverse too but it was really simple to make.

Here are a few pictures.. Turns out it was harder to photograph than I expected. If anyone does want to mount this way it takes a little patience because you have to attach the back of the PrimeSense case to the bioloid bracket and assemble the sensor at the same time. This is because the cable runs from behind the sensor up into the unit and the bracket removes access to the underside of the sensor. If needed I could take mine apart and post photos of the process.. I'm thinking about ordering some of the grey bioloid brackets from Trossen so I can dye them pink :D so that might be a good time to do so..

588958905891

KurtEck
04-27-2015, 05:11 PM
Thanks, I will have to pull my PrimeSense sensor out and see how hard it would be. I think before I just used wire ties to hold the base on, but it was not overly stable. Also may experiment on where to mount as I have the newer frame with extra top piece.

Boy all of these things to help keep me busy as it is now spring and everything is growing...

r3n33
04-28-2015, 05:42 PM
Today I ventured off the power supply, attached a battery, and teleoperated the hex from my desktop via the PS3 controller. I must admit I made quite a few trips from the desktop to the other room to make sure I wasn't about to crash :p. This is a map generated of an area of my living room and despite having some issues with the recent imu calibration I performed it came out pretty nice.

In the camera view of this picture you can see the area where I started mapping from and the table where the hex was assembled.
5894

And in this picture you can see the Depth Sensor image was turned on. You can also make out the L shaped sofa on the left and on the map you can see the hall way to the computer lab.
5895

KurtEck
04-28-2015, 05:44 PM
That's awesome! Glad you're getting more oomph out of that little board.
I'm actually quite impressed with it. The GPU can be used, too, even headless if you don't mind some arcane setup magic...
For the fun of it I will probably swap the Edison off of my PhantomX for the spare RPI2...

Playing around building some of my own earlier RPI code base for the Phoenix. May also experiment and try using the PS3 code base from the HROS1 code base instead of Commander...

Thought I would update my make files to maybe use the above compile flags. But what I am wondering if there is a reasonable way to detect if I am compiling for the RPI versus the RPI2?

I have stuff in my makefiles like:
ifeq ($(OSTYPE),linux-gnueabi)
...
So most things build on RPI, BBBK maybe Odroid and maybe Edison

tician
04-28-2015, 07:17 PM
Thought I would update my make files to maybe use the above compile flags. But what I am wondering if there is a reasonable way to detect if I am compiling for the RPI versus the RPI2?

I have stuff in my makefiles like:
ifeq ($(OSTYPE),linux-gnueabi)
...
So most things build on RPI, BBBK maybe Odroid and maybe Edison
Could probably use 'cat /proc/cpuinfo' or 'lscpu' with grep, and maybe a bit of sed, to identify the processor name and/or architecture then set different flags for each.

KurtEck
04-28-2015, 07:53 PM
Sorry for the slight hijacking here...

It looks like you are making great progress!

Romain
04-29-2015, 09:47 AM
Hi,

I have to admit, I got excited reading the 3 pages of this thread.

I am working on the implementation of ROS for the PhantomX Hexapod but I do not know how to do it properly and how to start.

I worked with the HumaRobotics packages for using this hexapod in Gazebo :
- https://github.com/HumaRobotics/phantomx_description
- https://github.com/HumaRobotics/phantomx_gazebo
- https://github.com/HumaRobotics/phantomx_control

And I added support for the PS3 joy and for the real robot dynamixels with the ROS dynamixel package : http://wiki.ros.org/dynamixel_controllers
But I did not find yet with a proper way to generate the gaits.

Your project is just amazing, it is exactly what I want to do.
Actually, my project is to develop a gait to walk on a rough terrain and I don't want to spend more time implementing ROS for the hexapod.
I did not see any link to your sources, but could you share it with me ? I'm sure we can work together on this implementation, I am actually doing a full time job on this project.

KevinO
04-29-2015, 12:48 PM
Romain, you are right Renee has totally been rocking this project. Since I'm the primary author of this code I'll send you a PM to chat about this. We are still working on some bugs and features. Primarily finishing up the implementation of the navigation stack that the PR2 and others use.

r3n33
04-29-2015, 07:37 PM
Thanks Romain!

It is an exciting project to be working on and obsessing over as of lately ;) Like Kevin said the code is in a work in progress state but coming along nicely. I'm betting he will get you going in the right direction at the very least.

In those links you posted there is an image of a PhantomX rendering.. I see what looks like foot sensors? That is something I'm interested in playing with one day and I've been considering how I'd design such a sensor/switch. I'm curious if you or someone you know has already ventured down that avenue?

Romain
04-30-2015, 01:37 AM
In those links you posted there is an image of a PhantomX rendering.. I see what looks like foot sensors? That is something I'm interested in playing with one day and I've been considering how I'd design such a sensor/switch. I'm curious if you or someone you know has already ventured down that avenue?

Yes, they are redesigned feet to hold a force sensor, a FSR 400 actually. They were designed and one were 3D-printed but not tested on the hexapod. I will improve the design but I'm not sure yet if I will stay with the FSR 400, move to the larger FSR 402 or simply use switches. If someone has experience with one of those, I'm also interested.
But before that, I want to try if I can use the compliant feature of the Dynamixel servos like others already did. Maybe it is enough and doesn't need extra components.
- https://cyber.felk.cvut.cz/research/theses/papers/480.pdf (https://cyber.felk.cvut.cz/research/theses/papers/480.pdf)
- http://scholarcommons.usf.edu/cgi/viewcontent.cgi?article=5938&context=etd (here, they add an additional servo for the compliance)

Romain
04-30-2015, 03:30 AM
Hey jwatte.. thank you! You led me down a good path with those compiler flags.

These are what I went with on the Pi2:
-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7

And now CPU usage looks much better! This is while walking with Depth Sensor off still.


Hi,
I'm interested in the optimizations with the compiler flags.
Where do you set up those with catkin_make ?

Romain

tician
04-30-2015, 05:45 AM
In those links you posted there is an image of a PhantomX rendering.. I see what looks like foot sensors? That is something I'm interested in playing with one day and I've been considering how I'd design such a sensor/switch. I'm curious if you or someone you know has already ventured down that avenue?
I'm pretty sure that lynxmotion had made foot pegs for their crawlers that integrated a 0.2" FSR, but not sure how many people actually used them or how well they worked (KurtEck might know); think they may only have been usable by the lynxmotion controllers as simple contact switches instead of force sensors. The plastic feet of the Robotis kits have four slots+recesses in the bottom to accommodate 0.2" FSRs and Jon Hylands made some dynamixel device kits for them 5~6 years ago, but the 'rely on direct contact with the ground' bit made them prone to error and not terribly useful except in some very slow one-leg balance experiments with a Premium Type-A. The DARwIn-OP also has a version of the foot from Robotis with four 0.2" FSR sandwiched between the foot plate and the frame attached to the servos, but still not very accurate because of the flat, non-compliant contact surfaces and the spacer built into the FSR. With the plastic feet, I had to add multiple layers of tiny bits of duck tape to the FSRs to sort of calibrate them before coating the entire bottom in kapton to keep everything sort of protected; I'm thinking the kapton on some of the feet in the lab were then have been coated in another layer of duck tape for traction, but my memory of 2010~2012 is still fuzzy. I expect that someone has tried using flexiforce sensors instead of cheaper FSRs for greater accuracy, but they are also quite a bit more expensive and not sure they would actually provide much more useful information.



But before that, I want to try if I can use the compliant feature of the Dynamixel servos like others already did. Maybe it is enough and doesn't need extra components.
- https://cyber.felk.cvut.cz/research/theses/papers/480.pdf (https://cyber.felk.cvut.cz/research/theses/papers/480.pdf)
- http://scholarcommons.usf.edu/cgi/viewcontent.cgi?article=5938&context=etd (here, they add an additional servo for the compliance)
Pretty cool papers, though my quick and sleep deprived skimming did not pick out how they dealt with the feet snagging on obstacles or hitting obstacles taller than the feet were raised during their non-support portion of the gait. Still much more impressive than anything I've done with the built-in compliance of dynamixels: a wireless marionette system with simple force/position feedback between two gerwalks. It worked, but not very well because I was limited to using only RoboPlus Task for programming both of the bots (limited variables, no arrays, limited RF comms, etc.).

KurtEck
04-30-2015, 09:01 AM
Actually Kåre (Zenta) and/or Xan (not sure if he is ever up here) could probably answer some of this much better than I can.

But yes, we were starting to do some experiments with feet sensors over at Lynxmotion. I know some of us started off playing with some FSRs and I personally never had any luck with them as they were pretty picky on exactly where the foot hits and the like. Looks like Roboshop (purchased Lynxmotion) still sells some: http://www.robotshop.com/en/lynxmotion-hexapod-foot-sensor-pair.html

That is when some of us started playing with switches/switching circuits. The first set was with a bottom tube and foot piece that was pushed out by spring, and when pressed back in made contact... These two were very finicky and my attempts to use them on hexapod, only a few of them worked reasonably reliably. Jim then came up with a new designed leg switch for the T-Hex that enbeded a switch which worked pretty well. The early versions of the T-Hex came with these legs (minus the switch) as there was no released code to make use of them. I think later versions of the T-Hex they simplified the leg and they are no longer setup for this. Could go into more about this but...

What I have been meaning to try is to see how much we can detect simply by monitoring the AX-12(18... MX) servos. To detect when it is stepping onto something. I know at Orion Robotics (Basic Micro) Nathan was experimenting some with this, with their own Servos, which are like modified Hitec HS-645mg servos (RC signals), that can provide feedback (special pulse width to servo, who responds with a pulse back whose width gives you their current position). He also had a way to calculate approximate torque, I think from where you told the servo to go, where it says it is, which direction is it turning... So with the torque information, the code base was starting to try to detect some uneven ground stuff, by seeing if/when torque (or power usage or...) changes when you are not expecting it to, and build that knowledge into the gait. Things like:

When the leg is being lifted: probably don't need to check (maybe some checks later on if leg hits something above it).

When the leg is lifted and being move foreword, check Ankle/Knee servos if goes up maybe running into something, maybe try lifting leg higher.

when lowering leg again check to see if pressure goes up to some threshold, leg is probably down... Maybe stepping on to some thing... But unmodified this still did not detect divots, maybe walk gait should extend beyond where it thinks the ground should be and stop only when it hits something...

Again what Nathan was trying out, looked interesting, but they never really completed the stuff and for the most part I think Orion Robotics/Basic Micro are gone and their owners now only work on the Roboclaw type stuff (ION control)... But I keep meaning to experiment with some of this on the Dynamixel servos, especially since now we are using processors with a lot more horsepower than before...

Also a year or two ago Kåre did some interesting experiments with the PhantomX hexapod with uneven terrain walking. There is a thread up here somewhere, plus at least one youtube video (https://www.youtube.com/watch?v=byzP9QiFadI).
He can explain it a lot better than I can, but instead of trying to monitor when the leg hits something coming down, you instead simply allow it to hit something and figure out where it is. Something like the above, but instead of monitoring the servos, you know in the gait when the leg is supposed to be lowering. You then modify the servo parameters to change the torque limit(?) to something real low, so when it lowers and the leg hits something the servos simply stop. When in the gait you think the lowering has completed, you ask the servos for their actual current positions, from this you can calculate the actual position (height) using FK...
Again looking at his video you can see it worked pretty well!

Sorry if I am a little too verbose or am off topic.

Kurt

r3n33
04-30-2015, 10:18 AM
Wow cool these are some interesting views.. I'm glad I'm not the first to be looking into these things ;)

I was thinking along the line of mechanical switches but hadn't considered FSRs. Honestly, I don't know if I'll venture down floor sensing blvd or continue to work with the IMU and consider feedback from the servos. For now mapping and navigation is the goal and I'll take on as much extra as I can along the way especially if there is an opportunity to use the 3D printer.

As far as adding the compiler flags goes I had to add them after the catkin build directory was created from a catkin_make. There may be another way to accomplish this but I've stopped looking since I'm satisfied with this method:

Inside: [workspace]/build/CMakeCache.txt
Find: //Flags used by the compiler during all build types.
Change: CMAKE_CXX_FLAGS:STRING=-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7

Also, just for fun, here is a video I made last night where I play around with the IMU leveling:


https://www.youtube.com/watch?v=-MsaOpY6M7g

You might notice that I've replaced the little rubber pads (for the toes) from the PhantomX kit with beefy EcoFlex PLA pads that I printed since it only took a week to wear down the originals. This is one reason I know I'm going to want to put a little more time into the foot design :D

KurtEck
05-01-2015, 09:25 AM
Again looks great. As I mentioned it is inspiring me to hopefully finally get a handle on ROS, so soon I will install my second RPI2 on the PhantomX.

(Sorry if off topic here, will create new thread soon!)
Yesterday I received a 32gb SD card (lots of room for stuff). So far I have installed the later Raspberry Pi image and updated...

I also downloaded my Raspberry Pi project (https://github.com/KurtE/Raspberry_Pi) which has a few different versions of my Phoenix software ported to Linux), and used the readme.md file in there to install all of the stuff like Espeak/portaudio... so I could compile the code. Soon up replace the Edison on the PhantomX with this board and see if this works (probably still with XBee) Will then try version with PS3 controller... Install camera... Then Try ROS version...

But I am also in the process of installing ROS on this card. I am currently trying to do the steps in the web link: http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi

One question/issue I have so far is: in the step to build liblz4-dev (apt-get source -b lz4) it appears like this step just hangs

LZ4_decompress_fast : 18092 -> 69.4 MB/s
LZ4_decompress_fast_withPrefix6 : 18092 -> 69.4 MB/s
LZ4_decompress_fast_usingDict : 18092 -> 68.2 MB/s
LZ4_decompress_safe : 18092 -> 65.1 MB/s
LZ4_decompress_safe_withPrefix6 : 18092 -> 68.0 MB/s
LZ4_decompress_safe_usingDict : 18092 -> 64.6 MB/s
LZ4_decompress_safe_partial : 18092 -> 64.1 MB/s
cc -I.. -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -I. -std=c99 -Wall -Wextra -Wundef -Wshadow -Wstrict-prototypes -DLZ4_VERSION=\"r122\" -Wl,-z,relro ../lz4.c ../lz4hc.c xxhash.c fuzzer.c -o fuzzer
./fuzzer --no-prompt
Starting LZ4 fuzzer (32-bits, r122)
Seed = 0
Overflow tests : high address not possible
0 / 65536 -


Did you run into this? Is so do you know the fix?
EDIT: Update - I let this run for about two hours and it now finally completed ;) :D

Also on performance. I vaguely remember when I was earlier working on the RPI (not RPI2) that if I was running headless, I might have gotten better performance by reducing the amount of memory taken by the GPU. (raspi-config advanced options/memory split). I wonder if that still is valid with RPI2? Or does the camera stuff use the GPU? If so maybe it makes sense to give more memory? ... Just sort of wondering...

Again sorry if hijack... But it looks like you are having fun and it might have been the gentle kick in the rear that I needed :lol:

Kurt

r3n33
05-01-2015, 10:59 AM
Hey Kurt

I'm thinking about trying some of those same instructions today to get ROS running on the Raspbian image. At the moment I've had the most luck with an unoffical RPi2 image of Linaro. Also, for reference, these are the instructions I've gone by for getting ROS installed on my setup: http://wiki.ros.org/indigo/Installation/Ubuntu

So with BlueZ I went with these instructions and had good luck: http://blog.petrockblock.com/forums/topic/using-the-latest-bluez-for-ps3-bluetooth-how-to/

Funny thing just yesterday I started playing with the /boot/config.txt on the RPi2 and it all still seems to be valid. For quick reference here is the URL with the config details: https://www.raspberrypi.org/documentation/configuration/config-txt.md

It states the lowest value for gpu_mem is 16 and the default is 64 so there are a few megabytes to be recovered there if needed.

Hope this helps :D

KurtEck
05-02-2015, 10:13 AM
Thanks,

I just finished building the ROS as mentioned in the tutorial I linked to in the previous posting. It takes a long time. And I had to patch up the code in a couple places. Also building RVIZ did fail, but actual fail was complete hang of RPI2. I rebooted, ran the specific individual makefile for it with the -j2 under sudo and it completed... Then ran the main make again which completed all 188 steps. Now later today I will try the next steps of installing all of the extra dependencies like sound and joystick drivers. Also check to see if I have OpenNI2 installed.

I know with the ROS for ODroid (http://forum.odroid.com/viewtopic.php?f=112&t=11994&sid=2bb0b8f2a9b6ed165c00d8784252320e) they also install pointcloud(pcl) for viewing stuff, not sure if that is needed here or not...

But I have some non robotics stuff to do as well...

r3n33
05-02-2015, 11:00 AM
I did the same thing yesterday all the way up to installing all dependencies except for openni2 and it felt like I wasted my whole day. So I switched back to my Ubuntu 12.10 card and went back to hacking out my last issue, sound from the sound_play node.
Once I figured out why the jack server wouldn't start I eventually discovered I had to max out the jack buffer size to gain the clarity you'd expect from an audio port. So today is the first day I have all the components running from the pi just the way I want them to, hooray! Backup complete ;)

I'll be looking into ROS on ODroid just as soon as they tell me the XU3 has shipped. I'm a bit excited about getting to play with this board and hopefully in the near future I'll know how well it handles the same task load.

Non robotics stuff? Say it ain't so! :p

KevinO
05-02-2015, 04:50 PM
Thanks,

I just finished building the ROS as mentioned in the tutorial I linked to in the previous posting. It takes a long time. And I had to patch up the code in a couple places. Also check to see if I have OpenNI2 installed.

I know with the ROS for ODroid (http://forum.odroid.com/viewtopic.php?f=112&t=11994&sid=2bb0b8f2a9b6ed165c00d8784252320e) they also install pointcloud(pcl) for viewing stuff, not sure if that is needed here or not...



Point clouds are absolutely needed plus many other packages. I feel you might be stacking the deck against yourself Kurt. Renee has had an easier run since she is working with a OS that has ROS already built. I'm slightly worried on the OpenNI2 front as well. ROS provides a already built package that is known to properly work. I don't want to put you off of this but building all of it on your own might bring issues we will have a hard time with giving assistance. Have you thought about Renee's route?

KurtEck
05-02-2015, 05:13 PM
Thanks Kevin,

May end up having to go that route at some point (maybe soon). Bright side is that RPI2 uses SDCards, so I can always try both...

My thoughts on going standard RPI route is for convergence. That is currently the HR-OS1, is using standard Raspian for their stuff, although I don't think there is any real dependance on the OS. And assuming I get into ROS, it might be nice if I could then apply it to the other robot as well... But again that may be getting the cart before the horse.

Also I am also thinking I may also convert to one of the Odroids. Would like to try the get the C1 working with the prebuilt ROS image, if only I could figure out the network stuff. But that is another thread. If Renee like her new Odroid and I figure the odroid network stuff out, I may have to get the Xu3 lite which again would kick a lot of extra horespower in.

Kurt

KurtEck
05-02-2015, 05:51 PM
I did the same thing yesterday all the way up to installing all dependencies except for openni2 and it felt like I wasted my whole day. So I switched back to my Ubuntu 12.10 card and went back to hacking out my last issue, sound from the sound_play node.
Once I figured out why the jack server wouldn't start I eventually discovered I had to max out the jack buffer size to gain the clarity you'd expect from an audio port. So today is the first day I have all the components running from the pi just the way I want them to, hooray! Backup complete ;)

I'll be looking into ROS on ODroid just as soon as they tell me the XU3 has shipped. I'm a bit excited about getting to play with this board and hopefully in the near future I'll know how well it handles the same task load.

Non robotics stuff? Say it ain't so! :p
Non Robotics - Beautiful day today in the Northwest, so we took a drive...

So my question is if I go to doing the Ubuntu route, are you doing 12.10 or the new 14.04? Looking at installing Ros Ubuntu Arm:
http://wiki.ros.org/indigo/Installation/UbuntuARM

They show installing 14.04(ish) (https://wiki.ubuntu.com/ARM/RaspberryPi) As Kevin mentioned I might be better off if I had a setup closer to what you two are running on.

r3n33
05-02-2015, 05:55 PM
I do believe this (https://www.raspberrypi.org/forums/viewtopic.php?t=98997) is what I started with on the SD card I'm using now. I did try a lot of raspberry images in the last few weeks. Using another card is perfect isn't it? You can just switch back and forth between trying different things and it's easy to make a backup when you get the system setup the way you like.

Kurt, I give you credit for going the raspbian route and fairly quickly realized I'm not patient enough to build this complex of a system with all the patches and dependencies. It's madness sometimes. Openni2 was proving to be a real pain in the butt and with the Linaro route it's a simple apt-get install and within a minute you are done.

If the ODrioid cooperates I think the extra processing power is going to sway me towards that board. Which is why I haven't yet put all the electronics inside the body as I plan to do. I am going to be stepping up to a 5A 5V regulator since the XU3 specs a 4 amps on the website. Pretty big jump from the 22 watts I pull at idle with the current electronics. Then again that 4A has got to be under a full load so hopefully I won't be draining batteries before I can map a room :p

r3n33
05-02-2015, 05:56 PM
So my question is if I go to doing the Ubuntu route, are you doing 12.10 or the new 14.04?

Did I type 12.10.. I'm a dope.. I meant 14.10 :D

KurtEck
05-02-2015, 08:46 PM
Thanks, when you installed the ubuntu, did you also install a desktop? They show at least three versions to maybe install.
(x, l, k)... Which would you recommend. They also mentioned unity which had issues and K sound like it worked but slow...

I am in the process of trying out an image on another SDCard. This one may be tighter 8gb... But may be big enough to experiment with.

tician
05-02-2015, 09:01 PM
(kubuntu) KDE is pretty big and I never really liked it much; seemed to remind me too much of Windows XP at the time >5 years ago. (lubuntu) LXDE is the default desktop for rasbian, but a little rough for my taste. (xubuntu) xfce is the one I've been using for ~4 years since they switched from gnome to unity, and usually works quite well on 'not great' hardware (can turn off compositing if needed).

KurtEck
05-03-2015, 03:44 PM
Since I was able to get the wifi on the Odroid C1 to work with the Ros/OpenNI image to work, I may try it out on the Hexapod.

Also wondering what other hardware you are using on your setup and wondering if I need to order a few things.
a) Prime Sense camera: I have

b) Sound - With Odrioid I think I will need to use USB dongle. Which may imply I need external USB hub (the C1 has 4 slots), but I think I will need/want - Wifi, BT, USB2AX(have - but may replace with Teensy), camera, sound

c) Some form of IMU or Gyro? ... Do you have sometihing? If so suggestions on which one?
I think Kevin has/had one from Phidgets, and I think I see reference to CHRbotics UM7? I guess the main question will be is what sensors will work with this setup

Kurt

P.S. - I have a few more distractions to keep me busy as well, like HR-OS1 which I really should finish cleaning up the wiring, plus new Teensy breakout boards arrived...

r3n33
05-03-2015, 07:46 PM
You know on the Pi I'm not sure if I installed a desktop environment or not.. if anything it would be the lightweight lubuntu but I haven't been using the HDMI for display. I typically mount the ROS directory from the RPi on my desktop and work with Sublime text and a few terminal connections.

I saw you got the WiFi working on your Odroid, nice! My XU3 arrived today and I've just started messing around with ROS and the required nodes. I'm using the provided 14.04 on the eMMC card and apt-get installing ROS Indigo. Everything has gone perfectly expect for Rviz which seg faults at startup.. Google searching suggested I'm not the first so I'll likely look into it some more even though I plan to run the Odroid headless on the hex.

I'm not sure about the other Odroids but mine has a 3.5mm audio jack and once I installed jackd I had the sound_play node working. This plays nice with my micro Anker speaker from amazon and keeps a USB port available.

Looks like I'm going to have USB2AX, PrimeSense, and Bluetooth on my USB 2.0 ports.. leaving one available for a possible FTDI for my IMU. My WiFi is USB 3.0 compatible and to get the most out of it's speed I think it will use the 3.0 port. I had no idea until today that the Odroids were 1.8V logic level :robotsurprised: so my IMU is going to need it's 3.3V UART converted. I haven't put too much thought into that yet but now the time has come.

As far as IMUs go I'm using the CH Robotics UM7.. I've been using these CHR IMUs for some years now and like the features for the price. Kevin uses another brand IMU, Phidgets, and it has USB connectivity built in.. which could be good or bad depending on your needs.

KurtEck
05-03-2015, 10:05 PM
Thanks,

i was not sure if at times you ran some of the gui desktop ros apps on your rpi2 or not.

Yes got C1 up. Decided to try it as It is 3.3v vs their others which are 1.8v. But this one does not have headphone jack. But may have 5th USB port available through otg port. Most of 40 io pins compatible with Rpi2. But 3 are not as the added analog pins.

Will look at imus, but also wonder if I use arbotix pro, if the sensors are sufficient. Will maybe know more when docs are available and they have some up on web.

r3n33
05-03-2015, 10:23 PM
So a quick update on the ODROID XU3.. and yes it was a very quick setup..

The USB3.0 port works great for high speed WiFi leaving 4 USB2.0 ports for my accessories. Perfect.

ROS installation was a breeze with apt-get

With the loads of extra processing power over the RPi2 I was able to move all the nodes locally to the robot. This meant the ODROID was able to take on the odometry node and even bigger, gmapping. The only thing I run outside the hex is Rviz on my desktop and I think that's the way it should be. Unless you are able to carry a full computer on your back and you can just remote desktop your way in :p

The CPU usage right off the bat was nice..

5901

But my next thought was let's add compiler flags like we did on the Pi...
These are what I came up with: -O3 -pipe -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=hard
... and this is the result...

5902

So next up is getting the 5A regulator in the mail and figuring out how I'm going to mount the ODRIOD internally. The size of this board is pretty damn nice for the PhantomX body...

5903

Oh and just for fun.. coming soon... color!

5904

And a bit of a writeup on how and what I used to dye these Bioloid brackets if anyone is interested. With most credit going to Tyberius for creating the post (http://forums.trossenrobotics.com/tutorials/how-to-diy-128/dye-your-bioloid-2861/) that gave me the idea in the first place.

Romain
05-04-2015, 03:54 AM
Hi,

I was working on another project this week-end but I could see that you made some upgrades.



the 'rely on direct contact with the ground' bit made them prone to error and not terribly useful
[...]
but still not very accurate because of the flat, non-compliant contact surfaces and the spacer built into the FSR
[...]
I expect that someone has tried using flexiforce sensors instead of cheaper FSRs for greater accuracy, but they are also quite a bit more expensive and not sure they would actually provide much more useful information.

Thank you tician and KurtEck for your feedbacks, it is very interesting.



When the leg is being lifted: probably don't need to check (maybe some checks later on if leg hits something above it).

When the leg is lifted and being move foreword, check Ankle/Knee servos if goes up maybe running into something, maybe try lifting leg higher.

when lowering leg again check to see if pressure goes up to some threshold, leg is probably down... Maybe stepping on to some thing... But unmodified this still did not detect divots, maybe walk gait should extend beyond where it thinks the ground should be and stop only when it hits something...

This is exactly the kind of thing I was planning to do.
But, I could dig into that quicker if KevinO allows me to use his code.



Also a year or two ago Kåre did some interesting experiments with the PhantomX hexapod with uneven terrain walking. There is a thread up here somewhere, plus at least one youtube video (https://www.youtube.com/watch?v=byzP9QiFadI).

This video is quite amazing !



Inside: [workspace]/build/CMakeCache.txt
Find: //Flags used by the compiler during all build types.
Change: CMAKE_CXX_FLAGS:STRING=-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7

Thank you for the explanations, I will try that.
Currently, I use a dual-core pcDuino3. If it is too slow, I have also an Odroid C1 and a Raspberry Pi 2. Maybe I will go for an Odroid XU3 if needed, but it is more expensive...



But I am also in the process of installing ROS on this card. I am currently trying to do the steps in the web link: http://wiki.ros.org/ROSberryPi/Insta...Raspberry%20Pi
(http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi)[...]
EDIT: Update - I let this run for about two hours and it now finally completed ;) :D


As KenvinO mentioned, I think it is not a good idea to use Raspbian to use ROS on an ARMv7 device since for compatibility issues, Raspbian is only optimized for the Raspberry Pi 1's ARMv6 processor. Also, building ROS manually is a pain (I did it on the Raspberry Pi 1) when you could simply use apt-get install on a Ubuntu image.



Thanks, when you installed the ubuntu, did you also install a desktop? They show at least three versions to maybe install.
(x, l, k)... Which would you recommend.

Personally, I go for LXDE on embedded boards because it is only for testing purpose, I don't need to work on it so it is light and sufficient.
Actually, you don't need a desktop environment to run ROS on a robot attached on the same network of your workstation.



Everything has gone perfectly expect for Rviz which seg faults at startup..

r3n33, as you mentioned later, Rviz does not have to run on the onboard computer but only on your workstation as its purpose it to visualize data.

Sorry, I was a bit verbose but the thread was quite active during the WE.

LloydF
05-04-2015, 06:59 PM
Yes, that web tutorial on deb-wheezy install works to install ros but the kinect and Openni drivers will take a whole new adventure to install on arm6 paths.

KurtEck
05-05-2015, 08:12 AM
Thanks,

I took the advise of Kevin, and Renee and ... and I will be trying out the Odroid C1 whoes image already has ROS, PC, OpenNI and Kinect stuff installed

KurtEck
05-06-2015, 12:22 PM
I was looking again into modifying my 3d sensor and build a turret again for it. Then I remembered I have one by ASUS.
I think it is the: http://www.amazon.com/Xtion-Motion-Sensor-Developer-Depth/dp/B00KK2OGC6/ref=sr_1_4?ie=UTF8&qid=1430932241&sr=8-4&keywords=primesense

Kevin, Is this the one you are still using? Hopefully it is still compatible with the ROS/OpenNI2...

Razor IMU is shipping today.

Renee, have you been able to get the PS3 to work with your new Odoid XU3? I have not tried ROS with it yet on the C1, but having difficulties getting the PS3 to work with C1 over BT. There is at least one other on the Odroid forum that has problems with PS3 on Odroid XU3/lite: http://forum.odroid.com/viewtopic.php?f=99&t=12545

Having some fun!

Kurt

r3n33
05-06-2015, 02:18 PM
The insides of the PrimeSense and Asus Xtion are the same ( as far as I know ) and you shouldn't have any issues using one or another.

I haven't tried a PS3 controller on the XU3 but I did very easily pair my DualShock4 controller without changing the BlueZ libs in the provided ODROID XU3 14.04 image.

To do this I performed the pairing in lubuntu using Blueman Device Manager 1.23 ( provided with the image ) and BlueZ 4.101 ( also provided ).
I put the controller in pairing mode by pressing and holding the Share button and the PS button.
In Blueman search/add a device and you will see the controller.
Pair and trust the connection.
Then I use jstest-gtk ( apt-get install ) to verify all the buttons and axes were working.

KurtEck
05-10-2015, 03:13 PM
Quick update: Still not having much luck with PS3 controller. Will try again soon.

The Razor IMU should arrive Tuesday.

I have the ASUS mounted onto a simple F2 bracket. I removed the base from the ASUS. I thought about using screws to mount it in much the same way as you did, but did not like the idea of drilling and screwing into the areas where camera and board are as I am very likely to screw it up. So I used saw and cut out internals of F2 bracket such that it would fit with the horns of the camera going into the bracket. Currently I am holding them together with two larger wire ties. Later may simply fill voids between the two with epoxy.

5918

Now figuring out how to mount the two AX servos to the PhantomX. In an earlier build I used the servo mounting that is sort of in the center of the top plate, but my current version uses their newer top deck:
5919
Which I like as it gives room to put the battery in a good spot where I can easily remove it to charge. I think I would like to place the camera more or less where the front wire hole is in this top plate. Just need to figure out a decent way to do so.

I have a new 10amp 5v BEC which I will use to power the processor and through it probably most everything else.

Now I need to get back to my interruptions :D
Kurt

r3n33
05-10-2015, 09:47 PM
I went ahead and took my sensor apart to change out the brackets so I tried to take some illustrative photos to inspire others. So here are some pictures of what I did to my PrimeSense. It wasn't too complicated and looks really nice imo.

The back two screws removed. I realized later that you can take the microphones out of the face and it will be much easier to work with.
5920

You can see there is just a little room to work with but you can get a tool in there at a slight angle and unscrew the sensor from the bracket.

59215922

Here you can see the back plate of the sensor where I cut the factory mount tabs and drilled four holes. I used a Bioloid bracket as a drill template and squared it up to the edge of the sensor.

59235925

This is re-installation. With a bit of patience you can get 4 screws installed. Remember if you remove the microphones from the front plate you will have one less part in your way during assembly.

5926

You can see here the sensor housing has to flex around the M2? screws but they don't interfere with the electronics in any way.
I could also mention the face plate will flex the couple of millimeters and once installed I really don't notice at all.

5927

Hope this helps someone..

KurtEck
05-11-2015, 08:01 AM
Looks great, I like your new colored bracket!

My PhantomX has been rebuilt a few times. It started off as a V1 with Red brackets, but then I converted to V2, which now ships all black, but I was able to keep a few of the red brackets that hold the coxas to the femurs...

At some point I may follow your lead here and put screws through, but for now this should work. Also some two part epoxy would probably hold it pretty well as well.

Thanks again!

r3n33
05-14-2015, 07:00 PM
Re-introducing ROSie ( ROS Intelligent Explorer ), my PhantomX variant!

I've spent some.. er quite a bit of time wiring, modeling, printing, dying, splicing and soldering and I've settled down with this layout (for now). Pretty much everything expect the IMU which is nearly hidden on the top plate and the battery are inside the frame without the use of an extra deck. I left the ODROID XU3 in the case they provided to add some extra protection to the most expensive PCB in ROSie. Working around this I oriented every component in every way imaginable and place and re-placed part after part until I found something that looked good and didn't require cutting/hacking/modifying the original design.

So here she is.. my revised customized robot named ROSie :D

BEFORE:

5935

AFTER:

5936

5937 5938

KurtEck
05-14-2015, 07:22 PM
That looks great! :veryhappy: Very nice and clean.

Where does the battery go?

r3n33
05-14-2015, 07:37 PM
Thanks Kurt!

I'm going to place my battery up top and print a cover to try my best to hide it ;)

tician
05-14-2015, 08:21 PM
Since it is a ROS walker, will the cover design be turtle based?

Being a fan of silly, punny, and alliterative names, one of the many projects I wish I had funds to actually build is a large quad named 'Ivan the Terrapin'. Other projects include 'Vickie Vicious', 'Bunsen the Blue', 'Iorek the Indigo', 'Percival the Purple', and 'Lavender Menace'. Vickie is the only one to have made even the slightest progress because all the others will require lots of very expensive custom hardware, while Vickie is mostly software (plant/pest identification, health monitoring, watering, weeding, pruning, etc.).

r3n33
05-15-2015, 11:20 AM
I'm not sure I'm used to thinking of it as a turtle.. but what I had in mind is kinda like a turtle shell.

I'd like to put the battery more towards the rear to offset the weight of the sensor and servos up front and what I imagine is a cover over the battery / back half of the hex. I'd like to create something that flows with the rest of the body as it is and likely very similar in appearance to my drone's "helmet" design.

5939

KurtEck
05-17-2015, 11:42 AM
Sounds great!

I have been having some fun. I did configure the Razor to the ROS software and confirm that it runs. Still working on mounting things, but may wait for some more parts. May try parts of Trossen AX-12 turret assembly. I am still planning on mounting battery between top case optional top. Having your own printer sounds like it can come in handy! I like your helmet!

Also on whim, I ordered the Lidar lite from Trossen. Not sure yet if that is useable with ROS for this as well and can the two be integrated, but might be fun to try out.

Also on 2nd whim I ordered Xu3 lite plus 32gb emmc... As building image on C1 is pretty slow, especially building PCL, which required me to create a 1gb swap file just to be able to compile.

Lots of stuff to keep me busy!

Kurt

KurtEck
05-22-2015, 10:07 PM
Care package arrived today From Trossen :D

In addition to the Lidar Lite I ordered, I also received some parts of the PhantomX Turret, which I used with my servos to mount my Asus (Primesense) camera to the top of the PhantomX Hexapod (optional top).

SO far my mounting is not near as clean as Renee's so at some point I may tear apart the Asus and see about screwing the bracket to the cover instead of wire ties. But I think this can work for now.

I am also wondering about maybe remounting the top servo horizontal instead of vertical as to maybe not have the weight up that high... Not sure yet. But at least I think most/all of the parts are here now, so will try to start assembling everything...

Still need to get a version of the software on the Odroid to where I want it... But maybe soon will be making progress.

5953

r3n33
05-28-2015, 12:02 AM
It feels like forever but appears to have only been a week?!? I had a few days there where I wasn't sure what I was going to be doing with the ODROID ( and a couple without power) but with a lot of hard work it now seems it will stay for good! There were so many little issues I had to resolve to get the full 3D mapping package working on the XU3 properly and even so I have one workaround that I'm not fully satisfied with. Regardless, the results are quite spectacular from my lil ROSie even if the depth sensor is only working at half resolution. Along the way I've gathered all the facts and notes and created an "installation guide" to help others setup an XU3/XU3lite once the code is released.

Here is a 3D map view from Rviz of a good bit of my house. There were a couple rooms I looked inside but didn't venture around within.

59585959

In addition to the ODROID madness I've been working on some 3D models and printing prototypes. There was a post on the forum some time ago where someone started 3D printing tibia covers but seems to have disappeared. So I took from the images and created my own models in Sketchup. These are lightweight and don't require any hardware to install as they slide on and lock in place.

5960

I also worked on a battery cover because the only place I have left to put a battery is on top with my current configuration. Not to mention how it looks is just as important as how well it performs. So I started with a similar design to the "helmet" and added some similar stylings to match the tibias. I also had to make sure the ODROID could still breathe if I covered the top plate so I worked around the two big vent holes which looks kinda neat I think. The design fits up to a 5Ah 3S LiPo and keeps most of the battery out of sight and is easy to change the battery out to swap in a replacement.

5963

So here is everything ( as it is currently designed ) printed and installed. I know a few of the tibia covers aren't sitting the same as the rest (you probably can't tell) because they are old revisions that I haven't yet re-printed with the perfect fit.

59615962

Romain
05-28-2015, 02:28 AM
So here is everything ( as it is currently designed ) printed and installed.


Nice work! It is both compact and nice. These modifications change the look of the robot.



In addition to the ODROID madness I've been working on some 3D models and printing prototypes.


Actually, I was also working on 3D design last week. I made a support to hold the electronics stuff. But I did the opposite of you. I put the battery between the two plates and the electronics above. This is less beautiful but more convenient for development.

59645965




As far as adding the compiler flags goes I had to add them after the catkin build directory was created from a catkin_make. There may be another way to accomplish this but I've stopped looking since I'm satisfied with this method:

Inside: [workspace]/build/CMakeCache.txt
Find: //Flags used by the compiler during all build types.
Change: CMAKE_CXX_FLAGS:STRING=-O3 -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7


About the compiler flags, for more optimization, I would suggest to add the following flag :

-funsafe-math-optimizations
It is necessary when the NEON flag is used according to the GCC documentation.
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html



If the selected floating-point hardware includes the NEON extension (e.g. -mfpu=‘neon’), note that floating-point operations are not generated by GCC's auto-vectorization pass unless -funsafe-math-optimizations is also specified.

r3n33
05-28-2015, 09:06 PM
Having your own printer sounds like it can come in handy! I like your helmet!

Having a printer is amazing around here when it comes to creating things quickly. The printer at home has been here for a year and a half and has been used continuously with a minimal amount of maintenance. I absolutely love having a 3D printer at home.

5966

You can see the helmet has gone through a number of revisions ( yes was once made from tupperware ) over the years and once saved all of the electronics from disaster. Somewhere I have a picture of the exploded ( like bunches of pieces ) helmet.


Care package arrived today From Trossen :D In addition to the Lidar Lite I ordered

It is always a good day when a package from Trossen arrives at your door! I have a Lidar Lite too and have played with it a couple times. I'm not sure I'd use it on this project but I'm open to ideas.



Nice work! It is both compact and nice. These modifications change the look of the robot.



Actually, I was also working on 3D design last week. I made a support to hold the electronics stuff. But I did the opposite of you. I put the battery between the two plates and the electronics above. This is less beautiful but more convenient for development.


Thank you! Ty! I'm enjoying the look and can't wait to reprint the old revisions so they all look sharp.

I like what you've done with the electronics up top.. There doesn't seem to be as much space as you'd think but it looks like you have a pretty good board stack started there. It looks like a good dev bot!



About the compiler flags, for more optimization, I would suggest to add the following flag :

-funsafe-math-optimizations
It is necessary when the NEON flag is used according to the GCC documentation.
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html


Thank you for this! Everything helps. Especially when you find out you were doing it wrong :p

KurtEck
05-29-2015, 07:27 PM
Your robot is looking great. Very nice and clean!

One of these days I may have to break down and get one (3d printer)...

I do enjoy when packages arrive with Robot parts. Next one I am expecting is slightly different version of teensy board with DAC controlled speaker instead of RC Sound... OSHPark has sent them out... So another week or so... But that is different topic.

I will probably do like Romain also mount most of my electronics on the top as I am often tinkering with the electronics. I may see how much makes sense to mount in the inside chassis.

Again looking great. Once I get everything into one piece, it will be fun to see how RVIZ integrates all of the mapping information, 3d Image... stuff to generates those maps. it may be interesting in my house as my office is a couple steps down from one set of rooms and a couple steps up from a couple other rooms. Will be interesting to see how it maps this and it would be fun to find a way for the robot to walk up or down a couple of stairs...

Kurt

tician
05-30-2015, 11:36 AM
ROSie is looking very, very cool. Very sleek with a slightly spiky 'scale armor' look. Makes the asshat in my head scream ever louder that an HR-OS1 would be utterly wasted in my possession when there are so many others on the forum making actual progress on their projects.



You can see the helmet has gone through a number of revisions ( yes was once made from tupperware ) over the years and once saved all of the electronics from disaster. Somewhere I have a picture of the exploded ( like bunches of pieces ) helmet.
Having had several pets growing up, I kinda have to ask: did there happen to be a puppy involved in the helmet disaster? The long ago puppy preferred gnawing on cabinets and chairs or herding kids by nipping at ankles, but still claimed a few toys/devices. The seemingly immortal kitteh continues to like launching hairballs when around unattended electronics.



Actually, I was also working on 3D design last week. I made a support to hold the electronics stuff. But I did the opposite of you. I put the battery between the two plates and the electronics above. This is less beautiful but more convenient for development.

I will probably do like Romain also mount most of my electronics on the top as I am often tinkering with the electronics. I may see how much makes sense to mount in the inside chassis.
It just seems more than a little odd to me when you require full access to the electronics more often than you need to swap batteries. Then again, I prefer highly modular chassis designs where you can remove a few screws/bolts, and maybe a single panel/cover, to swap out a battery module, an electronics module, or an entire leg or wheel/suspension assembly. Makes repairing, reconfiguring, and upgrading so much easier.



I also worked on a battery cover because the only place I have left to put a battery is on top with my current configuration. Not to mention how it looks is just as important as how well it performs. So I started with a similar design to the "helmet" and added some similar stylings to match the tibias. I also had to make sure the ODROID could still breathe if I covered the top plate so I worked around the two big vent holes which looks kinda neat I think. The design fits up to a 5Ah 3S LiPo and keeps most of the battery out of sight and is easy to change the battery out to swap in a replacement.

Large capacity, easily accessible, easily swappable batteries are so very wonderful to have in a design, and even better when they look awesome. Also useful if there is any sort of 'emergency' as you don't have to disassemble the bot to save it from fiery LiPo death. The DARwIn-OPs have a little sheet metal 'door' with slightly recessed captive thumbscrew that is a literal pain to use and leaves very little room to access the hard-mounted deans connector without hitting the power switch and/or barrel cable connector. I long ago lost count of the number of times I sliced my fingers and/or cut power to the bots while trying to replace the tiny (3S ~1.1Ah LiPo) batteries in the small volume allocated for them between two hip servos.

Still just sort of troll ideas for now, but two things I really regret that I never got around to building in the lab were: 1) a battery vest/backpack for the DARwIn-OP (or just a completely new torso) with easy-align/connect/disconnect power/support tether (a tiny bit like the NAO prototype (https://www.youtube.com/watch?v=b0Rx017wA54)) and 2) auto-swap battery charging stations for the humanoids and rovers (a bit like the marXbot station (https://www.youtube.com/watch?v=zEeLjeJslH4)). If my brain finally starts feeling cooperative from meds, I may try to build an auto-swap and easy-connect tether for Ripley since I won't feel guilty about replacing an HR-OS1 torso like I would a DARwIn-OP's (also much easier to do). If I manage that, I may also try to implement the auto-swap station for mynyr since I've finally gotten mega-batt (4S 20Ah LiFePO4) back.

r3n33
05-30-2015, 02:36 PM
@Kurt @tician

Thank you both for the compliments! I'm even more satisfied with the results when I find out they are so widely liked =D


Having had several pets growing up, I kinda have to ask: did there happen to be a puppy involved in the helmet disaster? The long ago puppy preferred gnawing on cabinets and chairs or herding kids by nipping at ankles, but still claimed a few toys/devices. The seemingly immortal kitteh continues to like launching hairballs when around unattended electronics.

This time around it was all my fault.. it was one of those overly confident situations where you are showing off and accidentally get the drone upside down. I'm all like, hey watch this! Zooom... zooom.... whoops! Once that happens you hardly get to think before the thing goes splat! I landed on rock or pavement.. whatever it was it was very unforgiving. Looks like I delete the picture of the crash site ( if I took one at all ) but I do have this pic of what was left of the helmet.

5968

That particular helment was printed in T-Glase and since then I switched the Nylon but haven't landed upside down again (yet). Phew!

5969

My dogs are extremely well behaved now but in the puppy days the worst thing that ever happened was a brand new cell phone was chewed up. And the cell phone companies don't like to give you a 2nd free phone every so often. Growing up I had a cat.. and cats seem to love getting between you and something you pay a lot of attention to so I've definitely had my fair share of gross fur balls in electronics. Never fun!


Still just sort of troll ideas for now, but two things I really regret that I never got around to building in the lab were: 1) a battery vest/backpack for the DARwIn-OP (or just a completely new torso) with easy-align/connect/disconnect power/support tether (a tiny bit like the NAO prototype (https://www.youtube.com/watch?v=b0Rx017wA54)) and 2) auto-swap battery charging stations for the humanoids and rovers (a bit like the marXbot station (https://www.youtube.com/watch?v=zEeLjeJslH4)). If my brain finally starts feeling cooperative from meds, I may try to build an auto-swap and easy-connect tether for Ripley since I won't feel guilty about replacing an HR-OS1 torso like I would a DARwIn-OP's (also much easier to do). If I manage that, I may also try to implement the auto-swap station for mynyr since I've finally gotten mega-batt (4S 20Ah LiFePO4) back.

Awesome two new robot videos to feed my head with ideas! I love the way NAO sits down and can get back up and the release of the charge tether was pretty cute. I think that solution overall is a bit complex then again I just saw it happen so it isn't that crazy.

The marXbot station was super cool.. I couldn't stop grinning at a robot automatically getting a battery change.. and to see they used super caps to keep the core systems online was great.

Apparently I need to be looking a bit harder cause I don't remember seeing a robot with a 20Ah 4S LiFe! Good golly that is a lot of juice!

tician
05-30-2015, 04:09 PM
4S 20Ah (http://www.batteryspace.com/lifepo4-prismatic-battery-12-8v-20ah-256wh-10c-rate-24-0---un38-3-passed-dgr.aspx) is actually really small for the projects that were planned...

4WD outdoor rover driving down rows of crops unattended using paired cameras with complementary band-pass filters to search for distressed plants, and an arm with stereo cameras to reach into foliage to identify and remove pests into storage containers for later examination. Georgia Tech got most of the funding, but UGA is still collaborating a bit.

Before that was an omni-wheeled rover providing power, processing, and mechanical support to a DARwIn-OP via tether and overhead gantry, but depression and too many other projects stalled out my progress. I was the only part-time worker, then unsuccessful grad student, in the lab with three DARwIn-OP, the omni-wheel rover, the 4WD rover, a few Bioloid Type-A walkers (just legs) and humanoids, and now multiple PhantomX Reactor and WidowX arms, a few Darwin-Mini, etc. The omni-wheeled rover is still sitting in Dr. Thai's lab waiting for users to finish the gantry, reattach the kinect, and make it track a tethered DARwIn-OP to be let wander around a building and/or theater stage.


The humanoid tether system in my head is pretty weird. The power tether connector is basically two large flat contacts for power and possibly a couple smaller contacts for wired communication with the station, and held to the bot by electro-permanent magnets for auto-attach/release. The structural tether connection is two slightly recessed pins in the shoulders of the bot which the tether grabs and locks into with small rotating 'hooks'. The charge station consists of several power tethers hanging from passive overhead 'arms/cranes' around most of the circumference of the station with a central, small-ish (AX-12 powered), camera-equipped arm to grab a free tether and poke the back of the nearby bot to attach it. When disconnecting, the magnets are switched off to release the tether and the station reels in the tether so that the connector is back hanging within reach of the arm. Battery swapping would occur in the ~60 degree deadzone of the arm's reach and require the mechanical tether points to lock the bot in place while the battery is being swapped.

KurtEck
05-31-2015, 11:44 AM
r3n33 - Was sort of wondering with your xu3 are you connecting up some of your devices such as the imu through an usb converter or are you using the the usart that is part of the expansion connector which is 1.8v, and would require a ttl level converter?

I am thinking of trying the later. Will probably use Adafruit TXB01008 converter.

But I was also wondering about maybe experimenting with Lidar lite which I think connects up through I2C... I do have some Adafruit TTL converters that are supposed to work with I2C as well. Or could see about ordering a converter (usb2lds) from Xevel or could hook up to Teensy 3.1/LC... Not sure how fast the data is needed from these.

Kurt

r3n33
05-31-2015, 10:42 PM
r3n33 - Was sort of wondering with your xu3 are you connecting up some of your devices such as the imu through an usb converter or are you using the the usart that is part of the expansion connector which is 1.8v, and would require a ttl level converter?

I am thinking of trying the later. Will probably use Adafruit TXB01008 converter.

But I was also wondering about maybe experimenting with Lidar lite which I think connects up through I2C... I do have some Adafruit TTL converters that are supposed to work with I2C as well. Or could see about ordering a converter (usb2lds) from Xevel or could hook up to Teensy 3.1/LC... Not sure how fast the data is needed from these.

Kurt

I'm using the Adafruit FTDI friend for the UM7 IMU since I didn't have any 1.8V logic level converters. It did take the 5th USB port but so far that hasn't presented itself to be an issue. A couple time I needed to plug in a keyboard/mouse adapter but I can still unplug devices without disassembling the hex which makes it easy to swap for special cases.

The Lidar lite is only about 50-60Hz so the data rate shouldn't be an issue. I've not looked at the XU3 I2C specs but I imagine 400kbit/s full speed mode would be supported.

r3n33
05-31-2015, 10:55 PM
Before that was an omni-wheeled rover providing power, processing, and mechanical support to a DARwIn-OP via tether and overhead gantry, but depression and too many other projects stalled out my progress. I was the only part-time worker, then unsuccessful grad student, in the lab with three DARwIn-OP, the omni-wheel rover, the 4WD rover, a few Bioloid Type-A walkers (just legs) and humanoids, and now multiple PhantomX Reactor and WidowX arms, a few Darwin-Mini, etc. The omni-wheeled rover is still sitting in Dr. Thai's lab waiting for users to finish the gantry, reattach the kinect, and make it track a tethered DARwIn-OP to be let wander around a building and/or theater stage.


Sounds like robot heaven. Except for the depression, sorry to hear about that. What was the purpose in all the external support for the DARwIn-OP? I imagine there was something special going there.

If not for the price tag I'd love to have one of these high end humanoids to play with. Although I think I'd have more fun progressing the HR-OS1 since it is so young and there is so much room to grow.

tician
05-31-2015, 11:15 PM
Basically, the DARwIn-OP (ZeebZob) (https://www.facebook.com/ZeebZobActorRobot) is supposed to be interacting with humans in theater productions (https://www.youtube.com/watch?v=gumJZEde3jg) (usually on a ~4 foot stage and has taken many falls from that height killing multiple MX-28 motors and gearsets). The default walking engine is not very good at dealing with non-flat surfaces and/or slight external influences, and pre-recorded motions are even less reliable, so the mechanical tether was to catch the bot if it started to fall and the power/data tether was to increase runtime and provide supplemental processing. There was supposed to be an improvisational component with the DARwIn-OP mimicking, adapting to, and expanding on the human motions using the skeleton data from the kinect and extra processing on the omni-wheeled rover, but never got very far.

KurtEck
06-01-2015, 11:24 AM
It just seems more than a little odd to me when you require full access to the electronics more often than you need to swap batteries. Then again, I prefer highly modular chassis designs where you can remove a few screws/bolts, and maybe a single panel/cover, to swap out a battery module, an electronics module, or an entire leg or wheel/suspension assembly. Makes repairing, reconfiguring, and upgrading so much easier.
Currently with my PhantomX, I have three decks. With the current configuration, before I tear completely apart, I have an Arbotix-m, in it's normal place between the two lower decks, plus power AX hub... I have/had it setup that unplugging and rerouting two/three cables, I can run the PhantomX with the normal Arbotix code bases (so I could try things out when people have issues with code bases...). Between the second and third deck was the battery, which I could simply slide out the back... I had the other processors on the top deck. Example the Edison, where I had the Arduino version, with a TFT shield, where I had a control program running, and where I could display status information... Was thinking the same when I was doing C1, not sure yet with XU3, as I am not sure if I have any reasonably compatible displays for it. Could probably try one of the SPI ones with voltage conversion.


I'm using the Adafruit FTDI friend for the UM7 IMU since I didn't have any 1.8V logic level converters. It did take the 5th USB port but so far that hasn't presented itself to be an issue. A couple time I needed to plug in a keyboard/mouse adapter but I can still unplug devices without disassembling the hex which makes it easy to swap for special cases.
As I mentioned, I could go a couple different routes, as you can see in this picture:
5978
Currently I have one of the Sparkfun ftdi breakouts plugged directly into it as it has the pinout for this. On the right I have the smaller level converter from Adafruit. My understanding that these are not overly fast, but probably fast enough for the UART speeds asked for by the Razor. But supposedly they are I2C compatible. I know I had issues with I2C with some processors using some of these level converters, will see, but not a priority right now. To the right is the faster converter...

Also now wondering about Camera cable... It is probably 5-6 feet long... Wonder if I should try to shorten it...

r3n33
06-01-2015, 06:23 PM
Basically, the DARwIn-OP (ZeebZob) (https://www.facebook.com/ZeebZobActorRobot) is supposed to be interacting with humans in theater productions (https://www.youtube.com/watch?v=gumJZEde3jg) (usually on a ~4 foot stage and has taken many falls from that height killing multiple MX-28 motors and gearsets). The default walking engine is not very good at dealing with non-flat surfaces and/or slight external influences, and pre-recorded motions are even less reliable, so the mechanical tether was to catch the bot if it started to fall and the power/data tether was to increase runtime and provide supplemental processing. There was supposed to be an improvisational component with the DARwIn-OP mimicking, adapting to, and expanding on the human motions using the skeleton data from the kinect and extra processing on the omni-wheeled rover, but never got very far.

Cute video but poor ZeebZob just plopped right on her back :(

The very first challenge I'd work on with a humanoid is implementing IMU readings to provide better balance. This must be far more challenging than the drone flight controllers or two wheeled balance bots that I'm used to playing with.

So those are MX servos? I haven't looked that far into the specs or seen one in person but I'm surprised because he looks pretty small.


Also now wondering about Camera cable... It is probably 5-6 feet long... Wonder if I should try to shorten it...

Haha yes that cable is way too long. Being USB2.0 my camera cable only had 4 wires inside. These were color coded and easy to splice with some solder and heat shrink.

Since I did mine I received a bag of like 20 USB A connectors from ebay/china and the next time I need to make a shorter cable I'll skip the splice route and just put a new connector on there.

tician
06-01-2015, 07:18 PM
The MX-28 are very similar in size to the AX-12/18, but with different flange/end-plate designs and connector locations. The DARwIn-OP is only ~3cm taller and ~1.1kg heavier than the HR-OS1 endoskeleton, so it is fairly safe to call the HR-OS1 an AX-series DARwIn-OP with a bigger battery, a far superior processor board, and a far more easily modified torso.

The theater group added large steel plates to the bottom of ZZ's feet to let her stick to electromagnets buried in the surface of the elevated stage because most of the poses/motions they created were not stable, hence the frequent falling with the ensuing broken servos and deformed aluminum frames (borked one ankle frame beyond reuse).

The DARwIn-OP/HR-OS1/5 walking engine is mostly open loop. The parent gait was created ~2011 (http://www.researchgate.net/profile/Yusuke_Tamura2/publication/221066128_Gait_pattern_generation_and_stabilizatio n_for_humanoid_robot_based_on_coupled_oscillators/links/00b49518b05fde6c9e000000.pdf) based on coupled oscillators (http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6095061) and utilized joint feedback and gyro measurements, but the actual engine in the DARwIn-OP framework uses no joint feedback and the gyro has very little effect. The accelerometer is used almost entirely for determining if the bot has fallen and which way it should attempt to move to correct itself.

KurtEck
06-02-2015, 08:35 AM
Haha yes that cable is way too long. Being USB2.0 my camera cable only had 4 wires inside. These were color coded and easy to splice with some solder and heat shrink.

Since I did mine I received a bag of like 20 USB A connectors from ebay/china and the next time I need to make a shorter cable I'll skip the splice route and just put a new connector on there.
I decided to order some from Amazon.com... Two should arrive tomorrow and then a pack of 10 will arrive later. My guess is these will be shipped directly from China... Not sure how they can ship 10 of them for $2.99 including shipping?

jwatte
06-02-2015, 10:48 AM
It is said that the Chinese government subsidizes shipping out of China, for export reasons. It certainly seems like it to me. When I made the Onyx Fire boards, shipping the prototype to Shenzen cost $90; shipping the 100 finished boards back cost $35.

Note that USB cables from China I've gotten (on Amazon or Ebay) are often too narrow gauge -- if I try to power a high-draw device (500 mA) on them, the voltage will drop too much. The 3 feet cables are better than the 6 feet cables, and 1 foot is better than 3 feet, for obviouis reasons. If you're just using them to cut off a few inches to get a connector, that might not be a problem.

KurtEck
06-02-2015, 12:24 PM
It is said that the Chinese government subsidizes shipping out of China, for export reasons. It certainly seems like it to me. When I made the Onyx Fire boards, shipping the prototype to Shenzen cost $90; shipping the 100 finished boards back cost $35.

Note that USB cables from China I've gotten (on Amazon or Ebay) are often too narrow gauge -- if I try to power a high-draw device (500 mA) on them, the voltage will drop too much. The 3 feet cables are better than the 6 feet cables, and 1 foot is better than 3 feet, for obviouis reasons. If you're just using them to cut off a few inches to get a connector, that might not be a problem.
Yes it sure appears like someone is subsidizing the shipping from China... I remember reading about it from ODroid forums, where people were complaining that their shipping costs (from Korea) where way higher than from China... (Luckily we now we have American site to order from).

What I ordered was the actual connectors... (http://www.amazon.com/Premium-Connector-Shell-Type--Male/dp/B00CAUZN82/ref=sr_1_1?s=electronics&ie=UTF8&qid=1433265826&sr=1-1&keywords=usb+a+connector and http://www.amazon.com/gp/product/B00HN072RY?psc=1&redirect=true&ref_=od_aui_detailpages00) Not sure how good they are, but will give them a shot...

r3n33
06-02-2015, 02:30 PM
Yes it sure appears like someone is subsidizing the shipping from China... I remember reading about it from ODroid forums, where people were complaining that their shipping costs (from Korea) where way higher than from China... (Luckily we now we have American site to order from).

What I ordered was the actual connectors... (http://www.amazon.com/Premium-Connector-Shell-Type--Male/dp/B00CAUZN82/ref=sr_1_1?s=electronics&ie=UTF8&qid=1433265826&sr=1-1&keywords=usb+a+connector and http://www.amazon.com/gp/product/B00HN072RY?psc=1&redirect=true&ref_=od_aui_detailpages00) Not sure how good they are, but will give them a shot...

The 2nd link was the exact item I purchased ( on May 6th - so it took about 3 weeks )... Good find. And here I thought it came from eBay.

Still, I didn't get my (not so) fancy Estone lanyard thing.. I want my $2.99 back :p

5980

They actually seem pretty decent for a few dollars.. and if I'm in a pinch and I need the extra space I could use some hot glue and make a right angle USB since the metal is so short.

r3n33
06-09-2015, 09:20 PM
I didn't want to let too much time go by without posting an update. So, what have I been up to? In short a little bit of software and a little bit of hardware.

I've figured out the ODROID's USB 2.0 ports are on a shared bus and bandwidth may be limited. This was the main reason I was having trouble getting the full resolution out of the PrimeSense. Along the way I came up with an openni2_camera package modification that will allow you to set 15Hz on the RGB stream which further improved the performance over just using the ODROID's USB 3.0 port. Beyond that I didn't look too much further into the "limited bandwidth" than the XU3 schematic and a datasheet or two. I could if I had the time but I have a working solution and other tasks are a lot more fun.

These are a couple of screen shots from the rtabmap visualizer with the resolution fixed.

60056006

With a happy XU3 and depth sensor pair I played with mapping for a while but somehow I came across an interesting ROS package called cob_people_detection (http://wiki.ros.org/cob_people_detection). Basically it is a collection of packages that provide face and leg detection as well as facial identification. There really is quite a bit to it and I really had my mind set on getting this to work. A couple days later I emerged from "the lab" dancing around saying "I got it working!". One thing I thought was way cool is not only does it use the camera image but also relies on the data from the depth sensor to find find your head. I emailed the author to thank him for his work and maintaining the code. In response I was told they are still actively improving the package and new features are on the way. Oh and if you are as curious as I am and wonder what does the cob stand for? It's Care-O-bot (http://www.care-o-bot-4.de/) and this video (https://www.youtube.com/watch?v=3n42WbbYGZI) is too cute.

This is a screen shot of the people detection package visualized in Rviz. You can see it has detected and identified my face after performing the required training.

6007

And aside from helping Kurt wherever I can with the ODROID XU3 Daughter board idea I've also started a little side project to put my dusty Lidar-lite to use. I've seen these sensors mounted to servos to pan and give a 360 degree view. Much like this video (https://www.youtube.com/watch?v=mf45_cYzoV4) from trossenrobotics. Now I wanted to do something similar but without spinning the sensor so I came up with this design that spins a mirror and bends the light at a 90 degree angle. Granted I know there are some setbacks to this prototype and design but I am going to continue forward and see what I can come up with. Today the stepper driver arrived so tonight I'll get it all connected and start programming.

Here is a quick picture of the hardware ( I hope this comes out oriented properly )

6009

Zenta
06-10-2015, 12:47 AM
Great progress, looks like you've been busy with a lot and having fun!
The Lidar-lite mirror scanner looks interesting, I hope it work as intended.

Keep us posted. :D

KurtEck
06-10-2015, 07:40 AM
First off I would like to thank r3n33 for all of her help!

Her latest stuff looks great. Especially all of the mapping stuff as well as the face recognition integration. Can not wait to see what she comes up with next!

Will continue later on my thread...

r3n33
06-10-2015, 05:07 PM
First off I would like to thank r3n33 for all of her help!

Her latest stuff looks great. Especially all of the mapping stuff as well as the face recognition integration. Can not wait to see what she comes up with next!

Will continue later on my thread...

You are absolutely welcome! I'm glad to help where I can. The face recognition and the 3D mapping alone is enough to keep me busy for a long time. There are so many options for tweaking the configurations and they might as well be big red buttons that are labeled "don't push" because I'm going to have to try each of them.


Great progress, looks like you've been busy with a lot and having fun!
The Lidar-lite mirror scanner looks interesting, I hope it work as intended.

Keep us posted. :D

Thanks. I am always trying to have fun with quite a few successful moments in there.

The Lidar-lite mirror scanner is already functioning as well as I could expect being such a young project. I think I'm going to make a new thread for this little side project but for the sake of keeping things interesting here is a picture of it in action.

6015

This is a quick and dirty visualization of the first bits of test data I received.

6016

I'm expecting much more to come from this idea now and like I said I'll likely start a new thread because this is getting interesting quickly.

m3atsauc3
06-12-2015, 11:19 AM
Nice project! The cooling fans look great the way they are mounted.
Good to see that the Pi copes well with ROS, as I'm hoping to use one as well!

jwatte
06-12-2015, 11:32 AM
Maybe the "holding post" and the "finding a zero" problems can solve each other?

If there is one position you don't need to "see" (such as straight back,) then you can put the holding post there, and you can know that when the LIDAR hits that near measurement, you're pointed straight back.

r3n33
06-12-2015, 02:42 PM
Nice project! The cooling fans look great the way they are mounted.
Good to see that the Pi copes well with ROS, as I'm hoping to use one as well!

Thank you :) I think cooling fans make it look a little bigger and stronger without getting in the way. I still use them but probably don't need to so much since I stopped chasing my dogs around and started mapping with ROS.

The RPi2 did an amazing job. Make me wonder what they might have in store next for the raspberries.


Maybe the "holding post" and the "finding a zero" problems can solve each other?

If there is one position you don't need to "see" (such as straight back,) then you can put the holding post there, and you can know that when the LIDAR hits that near measurement, you're pointed straight back.

This is a good idea and should be a quick implementation too, thanks. Once I get back to the Lidar-lite I'll try cleaning up the short wires that are in the way and I'll see what the readings are when I scan past the holding post. When it gets power I'll have it seek a "home" position and then proceed to scanning from a know point.

Mayur
02-03-2016, 03:20 AM
Hi guys

This project is really awesome and has me inspired!

I am using a PhantomX hexapod for my Master's project, in which I'm developing a posture controller for walking on uneven terrain. My situation is actually quite similar to Romain's - I also came across the HumaRobotics packages a while ago and am using them to simulate the robot in Gazebo. I need to change the gait generation to use inverse kinematics though, as I need this for the posture control.

I'm quite a newbie to ROS and I would like to spend as much time as possible on developing my control algorithm rather than implementing the walking code. I happened upon some of Kevin's locomotion code for his awesome Golem robot on KurtE's GitHub:
https://github.com/KurtE/Locomotion
But since this is not on Kevin's own GitHub I'm not sure if it is the correct version of the software, or even whether Kevin would prefer that his code stays private for now. It would save me loads of time if I could use some of this code, or Renee's version for the PhantomX, as a starting point for the gait generation in ROS for the simulation.:D I might also consider running the real robot with ROS at a later stage, if my project outgrows the Arbotix Robocontroller.

I look forward to collaborating on this project!

Mayur

KevinO
02-03-2016, 11:21 AM
Hi guys

This project is really awesome and has me inspired!

I am using a PhantomX hexapod for my Master's project, in which I'm developing a posture controller for walking on uneven terrain. My situation is actually quite similar to Romain's - I also came across the HumaRobotics packages a while ago and am using them to simulate the robot in Gazebo. I need to change the gait generation to use inverse kinematics though, as I need this for the posture control.

I'm quite a newbie to ROS and I would like to spend as much time as possible on developing my control algorithm rather than implementing the walking code. I happened upon some of Kevin's locomotion code for his awesome Golem robot on KurtE's GitHub:
https://github.com/KurtE/Locomotion (https://github.com/KurtE/Locomotion)
But since this is not on Kevin's own GitHub I'm not sure if it is the correct version of the software, or even whether Kevin would prefer that his code stays private for now. It would save me loads of time if I could use some of this code, or Renee's version for the PhantomX, as a starting point for the gait generation in ROS for the simulation.:D I might also consider running the real robot with ROS at a later stage, if my project outgrows the Arbotix Robocontroller.

I look forward to collaborating on this project!

Mayur

That fork is super super old. I've been meaning to ask Kurt to kill that fork. The main repo is private at the moment since I sometime push up "broken" stuff to keep a log of changes. Send me a PM and we can chat Mayur.

KurtEck
02-03-2016, 11:51 AM
That fork is super super old. I've been meaning to ask Kurt to kill that fork.
Gone - I forgot about that one...

KevinO
02-03-2016, 01:00 PM
Gone - I forgot about that one...

The private one will be going public soon. I have nearly everything worked out except the gazebo simulation stuff. It still needs work.

Mayur
02-03-2016, 03:33 PM
That fork is super super old. I've been meaning to ask Kurt to kill that fork. The main repo is private at the moment since I sometime push up "broken" stuff to keep a log of changes. Send me a PM and we can chat Mayur.
Thanks Kevin, I had a feeling that fork might be outdated and understand why you would want to keep the main one private for now. Will PM you to chat further.


Gone - I forgot about that one...
Kurt, I've removed the hyperlink from my original post.:happy: