User:Muhsin.King
Research Topic
Adviser: Dr. Andrew Williams Working with Matt Morris and the reset of the HEIRlab team, I'm working to implement the software side of a soccer-playing humanoid robot. My job is to achieve constant communication between the robot's controller, a CM-700, and an onboard Linux Mini-PC. While normally this wouldn't be a complicated task, I have to preserve the built-in firmware so that we can utilize RoboPlus motion files, and the default firmware has no support for the kind of direct PC to controller connection we need to establish.
Once I'm finished establishing this link, I will continue to work on other pieces of the project, including high-level decision making protocols based on visual input (on the Mini-PC side) and creating the RoboPlus task files that will initiate motions based on serial inputs.
Assuming we're successful in creating a soccer-playing humanoid, I would then move on to try and adapt the control scheme of the Darwin-OP to our own robot.
Milestones & Goals
1. Design and build a prototype embedded system using CM-700, mini-PC, Robotis servos and mini-PC
2. Port and adapt code to new embedded control system
3. Evaluate system on MU-L8 humanoid
4. Adapt embedded control system to ROS and evaluate
5. Learn to program OP2 vision and motion system.
6. Study the Robotis OP 2 (OP2) humanoid platform hardware and software.
Code
Find all the code for my project on its GitHub repository
Research Log
Week 1 - June 1-5
Monday
- Orientation part 1
Tuesday
- Orientation part 2
Wednesday
- Familiarized myself with the HEIRlab
- Set up workstation
Thursday
- Began exploring methods of communicating with the CM-700 microcontroller from a Linux PC
- Found methods using Embedded C
- These wipe the factory firmware, which we need
- Exploring methods of exporting RoboPlus motion files to C/C++
- Turns out this is impossible/unsupported by Robotis
- Moving forward: how to call roboplus files programmatically?
- Attempted to explore Darwin OP2 code from source
- Can't mount files on windows, installing Linux virtualbox
Friday
- Found Python code to issue commands to a Bioloid (CM-510) from a Mac
- Very poorly documented; might not be viable.
- Can't test, as our LN-101 cable (connects CM-700 to USB) seems to be broken
- Set up a Git repository for the HEIR lab Robocup 2015 team
Week 2 - June 8-12
Monday
- Waiting for new LN101 cables so I can connect to CM-700
- Set up teammate Ryan Walsh with source control
- Created a Github repository for his vision code
- Created a git cheatsheet for him so he can maintain it himself
- Began designing hardware and software control structure for a soccer-playing robot
- Hardware: webcam sends image data to Linux, Linux relays commands serially to CM-700, CM-700 actuates motors
- Software: vision code detects objects, relays commands to Linux controller, Linux controller sends command signals to the CM-700 task file, task file interprets signals and initializes the appropriate motion page
- Investigated dynamixel documentation
- Investigated further methods of reading data into RoboPlus Task files
- Zigbee SDK: wireless communication with CM-700
- Not as good as a wired connection, but more officially supported
- Ran through a few RoboPlus tutorials
Tuesday
- Still waiting on LN-101 cables
- Set up software environments to run the PySerial and Zigbee code
- Installing dependencies for Mac (Python, PySerial, Tkinter, etc.)
- Set up Zigbee SDK
- Helped teammate deconstruct the old humanoid platform
Wednesday
- LN-101s arrived!
- New issue: LN-101 does not connect correctly
- Does not automatically install drivers (as on Windows)
- Found FTDI drivers
- Not compatible with current version of OSX...
- Updated OSX
- Setup runtime environment on Linux MiniPC
Thursday
- Installed FTDI drivers on Linux
- RoboPlus tutorials
- Created RoboPlus motion/task files to move a simple motor given a button push (Windows)
- RoboPlus troubleshooting
- REU group meeting on research presentations
Friday
- Created wiki page
- New issue: LN-101 doesn't show up in /dev on Linux
- Investigated different FTDI drivers
- VCP vs. D2XX
Week 3 - June 15-19
Monday
- USB troubleshooting
- Found out how to roll back drivers on Windows
- This removes the product ID, making the Linux drivers not work
- Found a utility to restore product ID
- Exploring methods of transmitting and receiving data via LN-101
- Learning about dynamixel error codes
Tuesday
- Updating RoboPlus task file aimed at testing CM-700 tx/rx
- Researched various methods of screening into a serial port
- Successfully connected to the CM-700 via terminal
- Went to a talk on research papers/presentations
- Created a program that reads data from CM-700
Wednesday
- Created a program that writes data to the CM-700
- Created/compiled a library that properly encodes the data such that the CM-700 understands it
- Tested out various commands on the task file I set up earlier: SUCCESS
- Created a tutorial on git for setting up and repairing the LN-101/FTDI drivers
- Spent the rest of the day debugging/cleaning codebase
Thursday
- Attended talk on plagiarism & the IRB
- Working on task/motion files for the final product
Friday
- Made new task file for a read test from CM-700
- Attempting to decode motor angles from CM-700 data
- Helping Ryan Walsh with vision/tracking
Week 4 - June 22-26
Monday
- Attempting to read from motors
- Setting up teammates with Github (again)
Tuesday
- Debugging motor reading code
- Exploring methods of achieving vision/head tracking
Wednesday
- Working on RoboPlus task files
- Defining motion mappings in tx header
- Created test file for walking
Thursday
- Finished motion mappings
- Vision and tracking of a single ball achieved (sweet)
- Explored BioloidCControl
- Creates a new firmware, erases old
- Converts motion files from RoboPlus to C
Friday
- Continued to explore BioloidCControl
- Compiling C libraries with C++ to play nice with vision/tracking
Week 5 - June 29-July 3
Monday
Tuesday
Wednesday
Thursday
Friday
Week 6 - July 6-10
Monday
Tuesday
Wednesday
Thursday
Friday
Week 7 - July 13-17
Monday
Tuesday
Wednesday
Thursday
Friday
Week 8 - July 20-24
Monday
Tuesday
Wednesday
Thursday
Friday
Week 9 - July 27-31
Monday
Tuesday
Wednesday
Thursday
Friday
Week 10 - August 3-7
Monday
Tuesday
Wednesday
Thursday
Friday