Just a few days to kick off officially the GSOC this year so i’m sharing the progress so far through the Community Bonding period:
Week 1 progress:
What has been accomplished?:
Week 2 Progress:
-
What has been accomplished?:
- I2CDriver updated.
- Xenomai kernel and modules deployed. The Xenomai kernel doesn’t suffer from the errors that the RT_PREEMPT does.
- PWM generation using the PRU driver tested. Refer to this post.
- Tested the RCOutput Linux layer. Seem to work fine.
- RCOuput Software and Hardware tested together. RCOutput works fine. Several SimonK firmware ESCs work perfectly with the AP_Linux_HAL.
- AP_Motors tested with Erle Robot. Refer to https://www.youtube.com/watch?v=7J2JYUvwl-4.
-
Issues:
- RT_PREEMPT kernel and PRU seem to conflict. Documented here. Dicussion about this topic here. The Xenomai kernel doesn’t suffer from these errors. For now the RT_PREEMPT issue is left asside to continue with the goals (not within the GSOC goals).
- Issue with the MPU9150 sensor driver. Refer to this fix.
- Barometer MS5611 not detected. Seems like a hardware/design issue. Present both in the robot Erle and the PXF.
- Issue with the GCS parameters (refer to https://groups.google.com/forum/#!topic/beaglepilot/dQlxse11JNI). There’s also the UARTDriver to be checked.
- Issue with the overlays. PRU and BB-SPI1-SWP-01 conflict.
-
Plans for the next period (this is a list of tasks for the author):
-
Fix the old CS select method (MPU6K).
-
Compile vanilla kernel
-
Modify drivers according to the new GPIO layer. Test them.
-
Code CS according to tridge’s comments.
-
Modify the I2C driver to accept a bus number
-
Test the performances using the logs. Refer to https://groups.google.com/forum/#!topic/drones-discuss/7DKcdm0AEPo
-
Review the PREEMPT_RT bug.
-
Make the drivers platform agnostic.
-
Code AP_InertialSensor/AP_InertialSensor_Linux.cpp driver which acts as a front end for multiple hardware drivers
-
Code kernel drivers. Start checking the MPU6000. The MS5611 could be started from the BMP085 driver.
-
Test the new DT (waiting for Anuj)
-
Test all the drivers (needs the DT)
-
Test GPS hardware.
-
Ideas about the new AP_HAL_Linux (using dedicted threads for each SPI, etc.). Discuss in more detail with @tridge.
-
Review the possibility of creating a RCOutput code that relies on the eHRPWM instead.
Next week will be mainly used to make some performance tests comparing the different kernels (unless the PREEMPT_RT issue is addressed it will be left aside) and finish as many of these additional tasks as possible.
Week 3 Progress:
-
What has been accomplished?:
-
Issues:
- RT_PREEMPT kernel and capemgr conflict. Documented here. Dicussion about this topic here. The Xenomai kernel doesn’t suffer from these errors. For now the RT_PREEMPT issue is left asside to continue with the goals (not within the GSOC goals). The capemgr won’t be use in the longer term thereby we skip the issue.
- Issue with the MPU9150 sensor driver. Refer to this fix.
- I2C Barometer MS5611 not detected. Seems like a hardware/design issue. Present both in the robot Erle and the PXF.
- Issue with the GCS parameters (refer to https://groups.google.com/forum/#!topic/beaglepilot/dQlxse11JNI). There’s also the UARTDriver to be checked.
- SPI Barometer and IMU run fine separately. When used together with ArduCopter the Baro crashes. Refer tohttps://groups.google.com/forum/#!topic/drones-discuss/pokYZT4wYvs.
-
Plans for the next period:
-
Go through Tridge and Roberto’s comments for the MS5611.
-
Look at the SPI MS5611 behaviour with ArduCopter.
-
Flight tests
-
Finish up the I2C driver to accept a bus number. Multi-i2c-aware driver.
-
Make the drivers platform agnostic.
-
Code AP_InertialSensor/AP_InertialSensor_Linux.cpp driver which acts as a front end for multiple hardware drivers
-
Test all the drivers
-
Test GPS hardware.
-
Ideas about the new AP_HAL_Linux (using dedicted threads for each SPI, etc.). Discuss in more detail with @tridge.
-
Review the possibility of creating a RCOutput code that relies on the eHRPWM instead.
The most most memorable result from this week are the tests performed with different kernels at the BeagleBone. These results are summarized in the following table:
Tenth Week
-
What has been accomplished?:
-
Issues:
- (* out-of-gsoc-scope *) RT_PREEMPT kernel and capemgr conflict. Documented here. Dicussion about this topichere. The Xenomai kernel doesn’t suffer from these errors. For now the RT_PREEMPT issue is left asside to continue with the goals (not within the GSOC goals). The capemgr won’t be use in the longer term thereby we skip the issue.
- (* out-of-gsoc-scope *) Issue with the MPU9150 sensor driver. Refer to this fix.
- (* out-of-gsoc-scope *) I2C Barometer MS5611 not detected. Seems like a hardware/design issue. Present both in the robot Erle and the PXF.
- (* out-of-gsoc-scope *) Issue when used with MAVProxy, probably related to the fact that RCin hasn’t been reviewed yet.
- (* out-of-gsoc-scope *) Commit 3c4062a7961a70b6ec46266d265d322ac0b9dd8f creates conflicts with the ESCs tested.
- (* out-of-gsoc-scope *) Issue with the IMU sensor MPU9250. Gyros not responding. Seems to be a hardware issue.
- (* out-of-gsoc-scope *) BBB spuriously shutsdown as if power button is pressed when connecting/disconnecting batteries. Related to http://bugs.elinux.org/issues/85. Can be dealt removing acpid.
- (* out-of-gsoc-scope *) Seems that the PXFs capes are in a bad shape so we might need to redo them.
-
Plans for the next period:
-
Review l3gd20 and lsm303d implementations. Code the LSM9D on top of these two.
-
Documentation and tutorials.
-
Prepare final material to be submitted.
-
(* out-of-gsoc-scope *) GSOC scope probably won’t allow to include these tasks. Still they will be implemented and the project will keep evolving through diydrones/ardupilot repository.
-
Rework the MPU9250 (tridge) i think we should re-work the 9250 driver to use the time based wait_for_sample(), add the dual-pole filtering and try sampling at 1KHz (tridge) that will raise the SPI load a lot (by factor of 5x), but should reduce the time spent in wait_for_sample() (tridge) to make that work we’ll need to change LinuxScheduler::_timer_thread() to not drift in time (tridge) right now it just does _microsleep(1000) between calls (tridge) it will need to instead have a “next_timer_tick” and sleep the right number of microseconds for that deadline (tridge) that will be needed to ensure we don’t lose any ticks, and that we average 1kHz (tridge) later I think we’ll need a thread per SPI bus, with an API to ask for regular transfers
-
Implement in the UART-like TCP sockets the “*” option.
-
Flight tests (play around with RCInput in AP_HAL_Linux, ask Anuj about status)
-
Finish up the I2C driver to accept a bus number. Multi-i2c-aware driver.
-
Make the drivers platform agnostic.
-
Code AP_InertialSensor/AP_InertialSensor_Linux.cpp driver which acts as a front end for multiple hardware drivers
-
Ideas about the new AP_HAL_Linux (using dedicted threads for each SPI, etc.). Discuss in more detail with @tridge.
Here’s my weekly report. Please note that the “plans for the next period” list kept growing through all the GSOC. This is not necessary bad since many of these tasks were out of the scope from the very beginning.
Also note that form the initial plan https://github.com/BeaglePilot/beaglepilot#gsoc-frame security and IDE integration have been discarded. The following weeks time will be allocated to push forward the software needs, address some of the current issues with the project and create documentation and tutorials that support others joining in the future.
Guys apologies for my late prompt. I recently moved to California and the jetlag/time difference/moving thing is hitting me hard.
I’ll write the formal report in a few hours but in a nutshell:
- Documentation is finished
- Video is on its way
Twelph Week
-
What has been accomplished?:
- Documentation and tutorials
- Added patches and scripts for easy sensor switches (mainly testing purposes)
-
Issues:
- (* out-of-gsoc-scope *) RT_PREEMPT kernel and capemgr conflict. Documented here. Dicussion about this topic here. The Xenomai kernel doesn’t suffer from these errors. For now the RT_PREEMPT issue is left asside to continue with the goals (not within the GSOC goals). The capemgr won’t be use in the longer term thereby we skip the issue.
- (* out-of-gsoc-scope *) Issue with the MPU9150 sensor driver. Refer to this fix.
- (* out-of-gsoc-scope *) I2C Barometer MS5611 not detected. Seems like a hardware/design issue. Present both in the robot Erle and the PXF.
- (* out-of-gsoc-scope *) Issue when used with MAVProxy, probably related to the fact that RCin hasn’t been reviewed yet.
- (* out-of-gsoc-scope *) Commit 3c4062a7961a70b6ec46266d265d322ac0b9dd8f creates conflicts with the ESCs tested.
- (* out-of-gsoc-scope *) Issue with the IMU sensor MPU9250. Gyros not responding. Seems to be a hardware issue.
- (* out-of-gsoc-scope *) BBB spuriously shutsdown as if power button is pressed when connecting/disconnecting batteries. Related to http://bugs.elinux.org/issues/85. Can be dealt removing acpid.
- (* out-of-gsoc-scope *) Seems that the PXFs capes are in a bad shape so we might need to redo them.
-
Plans for the next period:
-
(out of gsoc scope) Step-by-step BeaglePilot rover construction
Docs available here and goals pretty much achieved. In the following days i’ll put together a video and try to include a linux-rover-beaglepilot.