Difference between revisions of "User:Muhsin.King"
Muhsin.King (Talk | contribs) |
Muhsin.King (Talk | contribs) (→Week 7 - July 13-17) |
||
(23 intermediate revisions by the same user not shown) | |||
Line 23: | Line 23: | ||
6. Study the Robotis OP 2 (OP2) humanoid platform hardware and software. | 6. Study the Robotis OP 2 (OP2) humanoid platform hardware and software. | ||
+ | |||
+ | ==Code== | ||
+ | Find all the code for my project on its [https://github.com/muhsinking/heirlab-robocup-2015 GitHub repository] | ||
==Research Log== | ==Research Log== | ||
Line 36: | Line 39: | ||
'''Thursday''' | '''Thursday''' | ||
: Began exploring methods of communicating with the CM-700 microcontroller from a Linux PC | : 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++ | : 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 | : Attempted to explore Darwin OP2 code from source | ||
− | :: | + | ::* Can't mount files on windows, installing Linux virtualbox |
'''Friday''' | '''Friday''' | ||
: Found Python code to issue commands to a Bioloid (CM-510) from a Mac | : Found Python code to issue commands to a Bioloid (CM-510) from a Mac | ||
− | :: Very poorly documented; might not be viable. | + | ::* Very poorly documented; might not be viable. |
− | :: Can't test, as our LN-101 cable (connects CM-700 to USB) seems to be broken | + | ::* 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 | : Set up a Git repository for the HEIR lab Robocup 2015 team | ||
− | :: https://github.com/muhsinking/heirlab-robocup-2015 | + | ::* https://github.com/muhsinking/heirlab-robocup-2015 |
===Week 2 - June 8-12=== | ===Week 2 - June 8-12=== | ||
'''Monday''' | '''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''' | '''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''' | '''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''' | '''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''' | '''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=== | ===Week 3 - June 15-19=== | ||
'''Monday''' | '''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''' | '''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''' | '''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''' | '''Thursday''' | ||
+ | : Attended talk on plagiarism & the IRB | ||
+ | : Working on task/motion files for the final product | ||
'''Friday''' | '''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=== | ===Week 4 - June 22-26=== | ||
'''Monday''' | '''Monday''' | ||
+ | : Attempting to read from motors | ||
+ | : Setting up teammates with Github (again) | ||
'''Tuesday''' | '''Tuesday''' | ||
+ | : Debugging motor reading code | ||
+ | : Exploring methods of achieving vision/head tracking | ||
'''Wednesday''' | '''Wednesday''' | ||
+ | : Working on RoboPlus task files | ||
+ | : Defining motion mappings in tx header | ||
+ | : Created test file for walking | ||
'''Thursday''' | '''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''' | '''Friday''' | ||
+ | : Continued to explore BioloidCControl | ||
+ | : Compiling C libraries with C++ to play nice with vision/tracking | ||
===Week 5 - June 29-July 3=== | ===Week 5 - June 29-July 3=== | ||
'''Monday''' | '''Monday''' | ||
+ | : Converting controller to C++ | ||
+ | ::* Added class structure | ||
+ | : Write instructions for creating/compiling controller | ||
'''Tuesday''' | '''Tuesday''' | ||
+ | : Creating midway presentation | ||
'''Wednesday''' | '''Wednesday''' | ||
+ | : Create a test class for vision integration into control | ||
+ | ::* Compile test class as a library | ||
+ | ::* Create further tests in main controller for interpreting vision data | ||
'''Thursday''' | '''Thursday''' | ||
+ | : Midway presentations | ||
+ | ::* [https://docs.google.com/presentation/d/1CGiUVMLlZM46vh3Jp6aF3RHLiXzwrwjlhuIWjja_Q68/edit?usp=sharing See mine here] | ||
+ | : Mockups for team logo | ||
'''Friday''' | '''Friday''' | ||
+ | : Off day. | ||
===Week 6 - July 6-10=== | ===Week 6 - July 6-10=== | ||
'''Monday''' | '''Monday''' | ||
+ | : Created a skeleton methods for main controller | ||
+ | : Designed a state structure for the MU-L8 | ||
+ | ::* States: Init, Ready, Set, Play, Finish, Penalty | ||
'''Tuesday''' | '''Tuesday''' | ||
+ | : More mockups for team logos | ||
+ | : Designed actions for the primary controller | ||
'''Wednesday''' | '''Wednesday''' | ||
+ | : Created a test for executing motion files | ||
+ | : Created a task file for the bioloid type A motion file | ||
+ | : Made sure motions run continuously upon receiving serial commands from the PC | ||
+ | |||
'''Thursday''' | '''Thursday''' | ||
+ | : Created an Arduino button for starting the controller on the field | ||
+ | ::* Created Arduino code to relay the state of the button across a serial cable | ||
+ | ::* Created C code to read this serial data and relay it to the primary controller | ||
'''Friday''' | '''Friday''' | ||
+ | : Completed Arduino button code | ||
+ | : Began final vision/control integration | ||
===Week 7 - July 13-17=== | ===Week 7 - July 13-17=== | ||
'''Monday''' | '''Monday''' | ||
+ | : Continuing to integrate vision and control | ||
+ | ::* Running into dependency issues | ||
+ | ::* Troubleshooting OpenCV | ||
+ | ::* Reworking vision to improve compatibility and stability | ||
'''Tuesday''' | '''Tuesday''' | ||
+ | : Continuing to troubleshoot integration issues | ||
+ | ::* Considering switching to Eclipse (idea ultimately abandoned) | ||
+ | ::* Finalized makefiles for Vision | ||
+ | ::* | ||
+ | : Set up code environment on the second MiniPC | ||
+ | : Packing for the flight to China | ||
'''Wednesday''' | '''Wednesday''' | ||
+ | : Catching up on the wiki | ||
'''Thursday''' | '''Thursday''' | ||
Line 150: | Line 257: | ||
'''Friday''' | '''Friday''' | ||
− | |||
− |
Latest revision as of 16:28, 15 July 2015
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
- Converting controller to C++
- Added class structure
- Write instructions for creating/compiling controller
Tuesday
- Creating midway presentation
Wednesday
- Create a test class for vision integration into control
- Compile test class as a library
- Create further tests in main controller for interpreting vision data
Thursday
- Midway presentations
- Mockups for team logo
Friday
- Off day.
Week 6 - July 6-10
Monday
- Created a skeleton methods for main controller
- Designed a state structure for the MU-L8
- States: Init, Ready, Set, Play, Finish, Penalty
Tuesday
- More mockups for team logos
- Designed actions for the primary controller
Wednesday
- Created a test for executing motion files
- Created a task file for the bioloid type A motion file
- Made sure motions run continuously upon receiving serial commands from the PC
Thursday
- Created an Arduino button for starting the controller on the field
- Created Arduino code to relay the state of the button across a serial cable
- Created C code to read this serial data and relay it to the primary controller
Friday
- Completed Arduino button code
- Began final vision/control integration
Week 7 - July 13-17
Monday
- Continuing to integrate vision and control
- Running into dependency issues
- Troubleshooting OpenCV
- Reworking vision to improve compatibility and stability
Tuesday
- Continuing to troubleshoot integration issues
- Considering switching to Eclipse (idea ultimately abandoned)
- Finalized makefiles for Vision
- Set up code environment on the second MiniPC
- Packing for the flight to China
Wednesday
- Catching up on the wiki
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